From: matz@... (Yukihiro Matsumoto) Date: 2002-11-06T08:52:02+09:00 Subject: [ruby-dev:18651] Enumerable#zip まつもと ゆきひろです Dan SugalskiのPerl6の話に触発されてzipメソッドを作ったのです が、この挙動について自分では決めかねる部分がありました。私自 身はzipが欲しいと思う局面にであったことがないので、そういう 経験のある人から意見を聞きたいと思います。 [1] Enumerable#zipとは 複数の「列」をまぜるメソッドです。たとえば a = [1,2,3,4] b = [2,4,6,8] とすると a.zip(b) は [[1,2],[2,4],[3,6],[4,8]] になります。引数は配列またはto_aryで配列に変換可能でなけれ ばなりません。 [2] 決めかねる部分とは 複数の「列」の長さが異なる場合どうすべきかについてはいくつ かの選択肢があります。 a = [1,2,3,4] b = [2,4] としたとき (a) もっとも長いものに合わせる。現在の実装やPerl6ではこ のようになるようです。 a.zip(b) => [[1,2],[2,4],[3,nil],[4,nil]] (b) もっとも短いものに合わせる。Pythonのzipはこちらです。 a.zip(b) => [[1,2],[2,4]] (c) レシーバに合わせる。レシーバは位置的に特殊なので意味 はあるかも。 a.zip(b) => [[1,2],[2,4],[3,nil],[4,nil]] b.zip(a) => [[2,1],[4,2]] みなさんの意見を聴かせてください。 まつもと ゆきひろ /:|)