Ruby Tips!

RubyのTipsを紹介します

複数の配列から別の配列を生成する

2つ以上の配列を組み合わせて別の配列を生成するには、Array#zipメソッドが利用できる。

zipメソッドは、レシーバと引数で渡した配列から、要素を1つずつ取って、組み合わせた配列の配列を生成する。要素数はレシーバに合わせられる。このメソッドの動作はまるでジッパーのようだ。

[1, 2, 3].zip([4, 5, 6]) #=> [[1, 4], [2, 5], [3, 6]]

引数で渡す配列は複数であっても構わない。この場合も、それぞれの配列から1要素ずつ取って、組み合わせた配列の配列を生成できる。レシーバ要素数に対して足りない要素はnilで埋められる。

[1, 2, 3].zip([4, 5, 6], [7, 8]) #=> [[1, 4, 7], [2, 5, 8], [3, 6, nil]]

zipメソッドはブロックを取ることもできる。この場合はブロックにレシーバと引数で渡した配列の要素が順に渡される。これは複数の配列を同時に走査して何か処理を行う場合に便利だ。なお返却値はnilである。

[1, 2, 3].zip([4, 5, 6]){|v0, v1| puts v0 + v1} #=> nil