助田です. In [ruby-list:13636] Re: internal/external iterator (was Re: iterator for Dummies) >前田です。 >> ん? >> ナニによって駆動されているか?ではなくて >> ナニが注目されているか?の差だと >> 思って読んでいたんですが…違いました? >すみませんが、何をおっしゃりたいのかわかりません。 えーと,私なりの解釈は 内部イテレータの特徴 1.繰り返しの処理はイテレータを提供する側で行う. 2.イテレータを利用する側に渡されるのは,値そのもの. 値そのものなのでそれを使って次の値を求めることはできない. (「値そのもの」というのは語弊がちょっとあるかも知れません がうまい表現が見つからない.) 外部イテレータの特徴 1.繰り返しの処理はイテレータを利用する側で行う. 2.イテレータを利用する側に渡されるのは,値を指し示す目印 (値1つが入った入れ物) 値を指し示す目印を使って次の値を指し示す目印を取得する ことができる. 主に1.の視点でイテレータをみているのが前田さんで, 主に2.の視点でイテレータをみているのがA.中村さん ではないでしょうか. 1.の視点でみれば 繰り返しの処理を イテレータの*内部*(提供側)でやるのが内部イテレータ イテレータの*外部*(利用者側)に任せるのが外部イテレータ 2.の視点でみれば イテレータの「値そのもの」(値1つの入れ物がなく外側を覆う ものはなにもないから*内部*)を提供するのが内部イテレータ イテレータの「値の目印」(値1つの入れ物を提供し値の外側を それで覆うので*外部*)を提供するのが外部イテレータ 私は,「内部イテレータ」「外部イテレータ」の定義を知らないので 勘違いしているかも知れません. -------------------------------------------- 助田雅紀(masaki.suketa / systemplaza.co.jp) --------------------------------------------