From: "NARUSE, Yui" Date: 2008-02-13T15:21:51+09:00 Subject: [ruby-dev:33752] Re: Array の product の戻り値 成瀬です。 汎用 Indexer を用意できるまで潜伏している予定だったのですが、格好の例が でてきたので。 Yukihiro Matsumoto wrote: > また、Enumeratorを返す > ということは、戻り値に対しては他の配列的メソッドは使えないわ > けですが、その辺はどうなのでしょう? 例えばこれが、[ruby-dev:33448] や [ruby-dev:33472] で出した、Indexable (というか Indexer) が欲しくなる事例です。 あれから他の方に教えて頂いたのですが、「Enumerator」と「配列的メソッドを 備えたもの」は「C++ における Iterator」に一般化でき、その分類によると、 * Enumerator -> Input Iterator * 配列的メソッド -> Random Access Iterator にあたるそうです。 そして、 * 現在 Ruby には最もゆるい input iterator は存在するが、  それより厳しいものは全くない * よって、もっと厳しいものが欲しくても、配列に詰め込むか、  Enumerator で我慢するか、独自クラスを作ることになる。 * だから、「配列的メソッド」を備えた Enumerator、  つまり Indexer が欲しい。 * なお、「配列的メソッド」のキモは [], []=, length であり、  これらが実装されていれば、あとはそれを用いて実装できる ということが言いたかったのです。 -- NARUSE, Yui DBDB A476 FDBD 9450 02CD 0EFC BCE3 C388 472E C1EA