Rubyリファレンス: Home

zip (Enumerable)

Edit   History

標準クラス・モジュール > Enumerable > zip

enum.zip(other_obj, ...)

zipメソッドは、レシーバと引数のオブジェクトの要素を組み合わせ、配列の配列を作成します。

レシーバと各引数を行と列からなるデータと見立て、[[レシーバの要素1, 引数1の要素1, 引数2の要素1, ...], [レシーバの要素2, 引数1の要素2, 引数2の要素2, ...]]のように行と列を入れ替えた結果を返します。引数のオブジェクトの要素が足りないとnilで埋められ、余った要素は切り捨てられます。

引数に指定できるのは、Ruby 1.8ではto_aメソッドを持つオブジェクト、Ruby 1.9ではeachメソッドを持つオブジェクトです。

obj1 = (1..3)
obj2 = (4..7)
obj3 = [8, 9]
p obj1.zip(obj2, obj3)
[[1, 4, 8], [2, 5, 9], [3, 6, nil]]
enum.zip(other_obj, ...) {|arr| block }

zipメソッドにブロックを渡すと、要素を組み合わせた配列をブロック引数arrに入れて、ブロックを繰り返します。戻り値はnilになります。

obj1 = (1..3)
obj2 = (4..7)
obj3 = [8, 9]
obj1.zip(obj2, obj3) {|arr| puts arr.join(":") }
1:4:8
2:5:9
3:6:

関連項目