红宝石适用看跌数组
对于数组中的元素回应,我可以做红宝石适用看跌数组
[1,2,3].each(&:to_s)
方法,但对于:
[1,2,3].each {|i| puts i}
我不能这样做:
[1,2,3].each(&:puts)
如何优雅地将Kernel
方法(如puts
)应用于数组中的对象?会不会有Rubyish的方式?
回答:
puts
是一种方法,在定义Kernel
将其转换为proc
,使用:
[1,2,3].each(&method(:puts))
Symbol#to_proc
有特定的含义,基本上本身发送到接收器。
有人可能的任何方法转化为proc
通过它来阻止:
%w[1 2 3].map(&method(:Integer)) #⇒ [1, 2, 3]
回答:
你的最后一个例子是惯用的红宝石:
[1,2,3].each { |x| puts x }
当然,还有其他方法可以做到同样的事情,但上面的代码很简单,任何Rubyist都很容易理解。
以上是 红宝石适用看跌数组 的全部内容, 来源链接: utcz.com/qa/267247.html