K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>えーと、iterator は、iterator 自体がオブジェクトであるような >>作りにした方が便利だと思います。iterator を利用する側が >>必ず closure を作るのは面倒くさいですし、なにより、 > >利用者側がclosureを作るのが面倒というのは、Ruby風の >a1.iterate() { |i| > print("" + i + " "); >} >という書き方ができないからであって、iterate()というメソッドの >中にループ処理を隠している分、Iteratorを使うよりも >記述はシンプルだと思います。 >ただ逆に、慣れてないとループしているというのが分かりづらくなっています。 > > >>複数のコレクションを、複数の iterator を使って同時に並行して >>アクセスするようなプログラム、たとえばコレクションどうしの >>大小比較: >>function compare(i, j) { >... >>} >>print(compare(ArrayIterator(a), ArrayIterator(b)) + "\n"); >>みたいなことをしようとすると、eachメソッド方式では困っちゃいます。 > >Iteratorのご紹介ありがとうございます。ただIteratorは良い方法だと思いますが、 >Array自身にeachメソッドを付ける方法とどちらが良いかはよく分かりません。 >Arrayみたいな「データ構造」を表すクラス(もどき)にリスト(の要素)をイテレートするという >「処理」を表すメソッドを持たせるのは、真面目に考えればよくないのかもしれませんが、 >頻繁にでてくる処理なので、Arrayに持たせるのはバランス的に自然なのかもしれません。 >ただ、compare()みたいなのをどう表現するのかは、調べてみます。 > >(ぱ)さんへ >>ひとつのクラスのconstructorで10個のpointが作られた時、 >>「クラスフィールド」はひとつしかないので、ただのインスタンス変数とは違うでしょう。 > >よく考えたらその通りでした。すいません。 >closureの特性をうまく利用した方法だと思います。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!