Rubyリファレンス: Home

zip (Array)

Edit   History

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

array.zip(other_array, ...)

zipメソッドは、配列の要素を引数の配列other_arrayの要素と組み合わせ、配列の配列を作成して返します。transposeメソッドで[array, other_array, ...].transposeとしたときと同じく、行と列を入れ替えます。ただし、transposeメソッドと違って足りない要素はnilで埋められ、余分な要素は捨てられます。

arr1 = [1, 2, 3]
arr2 = [4, 5]
arr3 = [6, 7, 8, 9]
p arr1.zip(arr2, arr3)
[[1, 4, 6], [2, 5, 7], [3, nil, 8]]

Ruby 1.9 Ruby 1.9では、引数には範囲などeachメソッドを持つオブジェクトを指定できます。Ruby 1.8で引数に指定できるのは、配列(to_aryメソッドを持つオブジェクト)です。

array.zip(other_array, ...) {|ary| block }

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

arr1 = [1, 2, 3]
arr2 = [4, 5]
arr3 = [6, 7, 8, 9]
arr1.zip(arr2, arr3) {|a| puts a.join(":") }
1:4:6
2:5:7
3::8

関連項目