红宝石适用看跌数组

对于数组中的元素回应,我可以做红宝石适用看跌数组

[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

回到顶部