3

以下のように、splat パラメータを使用して「add」および「subtract」というメソッドを作成したいと思います。

def add(*numbers)
  numbers.inject(0) { |sum, n| sum + n }
end

def subtract(*numbers)
  numbers[0] - add(numbers[1..-1])
end

しかし、うまくいきませんでした。splat パラメータを別のパラメータに渡すにはどうすればよいですか? (特に特定の範囲の場合...)

ありがとうございました!

4

3 に答える 3

5

関数を呼び出すときは、配列オブジェクトの前addに追加*して、配列を複数の引数としてアンパックします。

def add(*numbers)
  numbers.inject(0) { |sum, n| sum + n }
end

def subtract(*numbers)
  numbers[0] - add(*numbers[1..-1])
  #                ^
end

subtract(9, 0, 1, 2) # => 6
subtract(9, 1) # => 8
于 2014-02-01T02:43:40.563 に答える