お世話になっております。 A.中村です。

On Tue, 23 Nov 1999 06:54:26 +0900
Kikutani Makoto <kikutani / galaxy.net> wrote:

>ただ、Arrayをpositionで指定してるのではなく、eachで指定してるんで、 a.each{|n| ...} だったら、内部でArrayが変更されようがやはり全メンバーに適用されるのかな、などとプログラムしてバグってました。

eachが要素の存在の検索(ヘンな言い方だな)を
インラインコールバックに呼ばれる「たびに」
行うんだったら、そう動くんでしょうね。

#eachメソッドの実装「に」外部イテレータが使われているってことかな

でも、なんかトロそう。

一般には
hoge.dup.each{|a| hoge.破壊的メソッド }

でしょうか。特にArrayならばコンテナ(?)なんで
dupすることでの効率や論理的不整合も問題ないでしょうし。

#先日Compositeを書いて初めてコレを意識した(笑)

ちなみに最初焦って(笑)、
hoge.reverse.each{|a| hoge.破壊的メソッド }

って書きました。これもたしかに動くんですが、これって
「逆順だから」動くんじゃなくて
「複製だから」動くんですよね。後で気づいた。


…って、こんな認識でいいんでしょうか?>俺