サイトウです。 replyありがとうございます。 On Wed, 8 Dec 1999 03:33:53 +0900 gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote: > i += 10 は i = i+10 なので、i という変数が何を指すかを変えて > いることになります。絵で描くと以下のような感じ: > > ブロックの実行を始めたところ: > > a = [1, 2, 3, 4, 5] > ↑ > i > > i += 10 を実行した後: > > a = [1, 2, 3, 4, 5] > > i→11 そのとおりですよね。 ルートのメール送って、布団に入ってから気づきました。 > Rubyの変数はオブジェクトを指すだけのもので、変数に対する操作 > は代入(指すものを変えること)と参照しかないので、 > (1) 添字を使ったイテレータにして、添字で指定したコンテナの > 位置に代入させるか はい、これはわかります。 自分の書いた例では、配列のイテレータでした。 しかし、それ以外の任意のオブジェクトの内部実装を表に出さずに、 イテレータブロックの結果をイテレータメソッドで利用したかったのです。 > (2) 参照しているオブジェクトを変化させる方法をつかうか > > a = [0,1,2] > a.filter{|i| i+10} > p a #=> [10, 11, 12] あ、これです! そうか、素直にブロックの戻り値を使えば良かったのか。 うわー。 青山さんのばあい、最初の例ですね。 ありがとうございました。 ----------------------------------- サイトウ ヒロシ HiroshiSaito / pob.org