1

当我从数组中收集值时,我喜欢使用这个 ruby​​ 习惯用法:

users.collect &:email

但是当我想加入这些价值观时,我最终不得不像这样扩展它:

users.collect { |user| user.email }.join(", ")

有一个更好的方法吗?

4

1 回答 1

7

我不明白你为什么要扩展它。你可以这样做:

users.collect(&:email).join(', ')


# or you can use collect's alias, map, 
# which is a much better name for this operation :)
users.map(&:email).join(', ')

&此上下文中的运算符是 a Symbol#to_proc。它基本上将您提供的符号视为它应该在接收器上调用并返回其结果的方法名称。

于 2012-09-24T03:21:41.360 回答