当我从数组中收集值时,我喜欢使用这个红宝石成语:
users.collect &:email
但是当我想加入这些值时,我最终必须像这样扩展它:
users.collect { |user| user.email }.join(", ")
有更好的方法吗?
答案 0 :(得分: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(', ')
此上下文中的&
运算符为Symbol#to_proc
。它基本上将您提供的符号视为应在接收器上调用的方法名称并返回其结果。