K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[421] Re:クラスメソッドとクラス変数
投稿者:タイガー
2007/02/20 02:13:25

>えーと、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の特性をうまく利用した方法だと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]