特别是,使用注入,以下脚本,
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>'
为什么会发生这种情况,有什么作用:*
,以及使用第二组脚本实现我正在寻找的结果的最简洁方法是什么?