在Ruby中可以有一行每个块吗?

在Ruby中写入每个块是否有单行方法?

cats.each do |cat|
   cat.name
end

我试图缩短项目中的代码量。我使用的是Ruby 1.9.2。

谢谢!

是的,你会写:

cats.each { |cat| cat.name }

或者:

cats.each(&:name)

但是,请注意,枚举#每个都返回您正在迭代的相同对象(这里:cats),因此,如果对块中的对象执行某种副作用,则只能使用它。很可能你想得到这个猫的名字,所以你可以使用枚举#映射表达式:

cat_names = cats.map(&:name)
http://stackoverflow.com/questions/10991971/is-it-possible-to-have-a-one-line-each-block-in-ruby

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Ruby中可以有一行每个块吗?