相关疑难解决方法(0)

如何传递函数而不是块

可能重复:
将数组的每个元素传递给函数的更短方式

我知道这会奏效:

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)

有没有人有关于如何做到这一点的想法?

ruby functional-programming

50
推荐指数
2
解决办法
2万
查看次数

&method(:method_name)在Ruby中的性能是否有害?

我最近遇到了&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的各种实现中,与前者相比,后者是否存在性能损失?如果是这样,实施者是否正致力于改善其绩效?

ruby performance

12
推荐指数
3
解决办法
3377
查看次数

标签 统计

ruby ×2

functional-programming ×1

performance ×1