There's an echo in my head

日々のメモ。

Enumerable#zipってなんぞ

レシーバと引数で与えられた配列を、レシーバの要素数個の配列に分割する。 (複数の配列の要素を、そのインデックスごとに取り分けた配列を作る、のほうが的確?)

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]

a.zip #=> [[1], [2], [3]]
a.zip(b) #=> [[1, 4], [2, 5], [3, 6]]
a.zip(b, c) #=> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

レシーバと引数とで要素数が異なる場合、

d = [10, 11]

# 足りなければnilで補われる
a.zip(d) #=> [[1, 10], [2, 11], [3, nil]]

# 多ければ切り捨てられる
d.zip(a) #=> [[10, 1], [11, 2]]
 
このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。