From: Shin-ichiro HARA Date: 2002-11-19T19:42:38+09:00 Subject: [ruby-dev:18848] Re: Enumerable#zip 原です。 >まつもと ゆきひろです >なんとなく、Array#transposeを作ってCVSに突っ込んでみました。 >現状では要素数があわないとIndexErrorを出します。IndexErrorで >良いかっていうと疑問が残るんですが。 おお! transpose って名前は長いですね。由緒正しいんだけど。 >each_withは良いかも。 each_with はいいですね。 >とはいうものの、現状ではEnumerable#zipを > > * レシーバの長さに合わせる(足りなければnil、余れば無視) > * ブロックが与えられたらsync_each(each_with)的動作をする > >ようにしてみました。 すばらしい。とうとう、ベクトル a と b の内積を a.zip(b).inject(0){|s, (x, y)| s + x * y} と一行で書けるようになったわけだ。 ところで、zip と zip{} の関係は to_a と each{} の関係になるわけで 誤解を招かないかな。zip と zip{} の関係を to_a と map{} の関係だと 思って、(0..1).zip([10, 11]){|x, y| x + y} #=> [10, 12] を期待しな いかな。