在javascript中,我可以这样做:
var show = function(w) {
alert(w);
};
var words = ['a', 'b', 'c'];
words.forEach(show);
请注意,我不需要将数组项作为参数传递。
红宝石有同样的方法吗?
像:
def show(w)
puts w
end
words = ['a', 'b', 'c']
words.each(show)
PS:
我知道我可以这样做:words.each { |w| show(w) }
。问题是我是否可以像在javascript中那样做,而不将项目作为参数传递。
答案 0 :(得分:4)
当然,你通过传递方法来实现,就像你在ECMAScript中那样:
words.each(&method(:show))
请注意,这是使Ruby示例工作的方法。但是,Ruby方法实际上并不是Ruby中最接近ECMAScript函数的模拟方法。 Proc
实际上是更接近的匹配:
show = -> w { puts w }
words.each(&show)
这实际上非常接近ECMAScript 6版本:
const show = w => alert(w);
words.forEach(show);