Rubyリファレンス: Home

collect, collect! (Array)

Edit   History

標準クラス・モジュール > Array > collect, collect!

array.collect {|item| block }

collectメソッドは、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返します。ブロック引数itemには各要素が入ります。

mapメソッドはcollectメソッドの別名です。

Ruby 1.8.7と1.9では、ブロックを省略したときの戻り値はEnumeratorオブジェクトになります。

次の例では、16進数を表す文字列を数値に変換した配列を作成しています。

numbers = ["68", "65", "6C", "6C", "6F"]
p numbers.collect {|item| item.to_i(16) }
[104, 101, 108, 108, 111]
array.collect! {|item| block }

collect!メソッドは、要素の数だけ繰り返しブロックを実行し、各要素をブロックの戻り値と入れ替えます。レシーバ自身を変更するメソッドです。戻り値はレシーバ自身です。ブロック引数itemには各要素が入ります。

map!メソッドはcollect!メソッドの別名です。

Ruby 1.8.7と1.9では、ブロックを省略したときの戻り値はEnumeratorオブジェクトになります。

次の例では、数値の配列を16進数を表す文字列の配列に変えています。

numbers = [104, 101, 108, 108, 111]
numbers.collect! {|item| item.to_s(16) }
p numbers
["68", "65", "6c", "6c", "6f"]

関連項目