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(', ')

このコンテキストの&演算子はSymbol#to_proc. 基本的に、指定したシンボルを、レシーバーで呼び出して結果を返すメソッド名として扱います。

于 2012-09-24T03:21:41.360 に答える