具体的には、inject を使用して、次のスクリプト、
puts (1..5).inject {|x, y| x * y}
とputs (1..5).inject(:*)
、
どちらも120
期待どおりの出力を持っています。
ただし、スクリプト
print [[1,2], [3,4], [5,6]].map {|x, y| x * y}
出力あり
[2, 12, 30]
予想どおりですが、スクリプト
print [[1,2], [3,4], [5,6]].map(:*)
を発生させますArgumentError
:
confused_ruby_map_inject.rb:1:in `map': wrong number of arguments(1 for 0) (ArgumentError)
from confused_ruby_map_inject.rb:1:in `<main>'
:*
2 番目のスクリプト セットで探している結果を達成するための最も簡潔な方法は何ですか?