From: Shin-ichiro HARA Date: 2002-11-12T18:18:26+09:00 Subject: [ruby-dev:18750] Re: Enumerable#zip 原です。 In [ruby-dev:18747] Akinori MUSHA writes: >であり、 each_with_index を each とするというものですが、より >一般化したやつを前に書いたことがあります。(提案もしたっけ) > >http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/rough/ext/enumerator/ そうでしたね。こんなスレッドもありました。 [ruby-list:29604] Importing eachdelegator.rb [ruby-list:29624] Enumerator [ruby-dev:13202] Re: [ruby-list:29672] Re: Enumerator [ruby-dev:13259] Enumerator -- Round 2 私も結構発言していて、組み込みにすることに対して反対していたみたい。 忘れていた。(^^; > あと、こないだ発作的に作ってみたのが、指定したクラスの each_foo >というメソッドすべて、もしくは指定したイテレータメソッド foo に >ついて map_foo, grep_foo, ... を定義してしまうという強引な物です。 eachdelegator.rb に匹敵する強引さ:-)だけど面白いですね。 each_with_index 問題は、この zip のスレッドとはちょっとテーマが違うん だけど、、、import-module.rb もちょっと視野に入れていて、こんなことが できます。 require "import-module" module With_index set_orig_method :_each, :each def each i = 0 _each do |x| yield(x, i) i += 1 end end end a = [10, 20, 30] p a.import(With_index){|s| s.map{|x, i| [x, i]}} #=>[[10, 0], [20, 1], [30, 2]]