From: Akinori MUSHA Date: 2009-02-24T19:53:59+09:00 Subject: [ruby-dev:38078] [Bug #1198] corrupted iteratoin during "enum_for :inject" チケット #1198 が更新されました。 (by Akinori MUSHA) ファイル with_index-incompat.patch 追加 ただ、この場合分けは1.9で整理した単値・多値の扱いの一貫性を崩すことにもなるので もう少し考えた方がいいと思います。 with_index-compat.patch の通り、1.8では、 - yield() されたら yield(nil, idx) する - yield(single) されたら yield(single, idx) する - yield(*multiple) されたら yield(multiple, idx) する といういびつな仕様で、単値か多値かを知っていないと正しいコードが書けない場合があります。 1.9では { |*args, idx| ... } と受け取り方ができるので、単に - yield(*any) されたら yield(*any, idx) する というすっきりした仕様に変更するという選択肢も十分に考えられます。 互換性が最大の障害ですけどね…。 ---------------------------------------- http://redmine.ruby-lang.org/issues/show/1198 ---------------------------------------- http://redmine.ruby-lang.org