可能重复:
将数组的每个元素传递给函数的更短方式
我知道这会奏效:
def inc(a)
a+1
end
[1,2,3].map{|a| inc a}
Run Code Online (Sandbox Code Playgroud)
但在Python中,我只需要写:
map(inc, [1,2,3])
Run Code Online (Sandbox Code Playgroud)
要么
[inc(x) for x in [1,2,3])
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以跳过在Ruby中创建块的步骤,并且这样做:
[1,2,3].map inc
# => ArgumentError: wrong number of arguments (0 for 1)
# from (irb):19:in `inc'
Run Code Online (Sandbox Code Playgroud)
有没有人有关于如何做到这一点的想法?
我最近遇到了&method(:method_name)语法.(这使用Object#method方法 - RDoc链接)例如,
[5, 7, 8, 1].each(&method(:puts))
Run Code Online (Sandbox Code Playgroud)
相当于
[5, 7, 8, 1].each{|number| puts number}
Run Code Online (Sandbox Code Playgroud)
在Ruby的各种实现中,与前者相比,后者是否存在性能损失?如果是这样,实施者是否正致力于改善其绩效?