前田です。 In message "[ruby-list:7628] Re: How to write Perl's `@a[@b] = @c' in ruby" Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> wrote: |Enumerable のメソッドの多くは「with_index 化」できるなあ、と考えて |いて勘違いしてしまいました。一々メソッドを作らずにする with_index |化するいいやり方って無いかしら。 class Object def with_index(iterator, *args) i = 0 send(iterator, *args) do |*x| result = yield(i, *x) i = i.next result end end end とすれば、 p "foo bar baz".with_index(:gsub, /[a-z]+/) { |i, s| i.to_s } #=> "0 1 2" などとできますね。 -- 前田 修吾