前田です。

At Mon, 12 Apr 1999 21:51:51 +0900,
中村暁史 <anakamur / exa.i-tech.co.jp> wrote:
> 1:
> ->> ->そういう意味では内部イテレータもコレクションの外部のオブジェクト
> ->> ->によって提供されるケースがあるわけですから、内部/外部というのはあ
> ->> ->まりうまい命名ではないような気もします。
(snip)
> 3:
> ->私が上で言おうとしたことは、内部イテレータはイテレータ側が繰り返
> ->しを制御するのに対して、外部イテレータはイテレータの利用者側で繰
> ->り返しを制御する
> 
> あれ?3って1と同じ意味なんですか?

最初のメールをもう一度見ていただければおわかりになると思うのです
が、3=>1という流れです。

> 「外のオブジェクトによって提供された(内部)イテレータ」
> という言いまわしが、ちょっと理解を超えました。

例えば、

class IndexIterator
  def initialize(collection)
    @collection = collection
  end

  def each
    for i in 0 .. @collection.length-1
      yield(@collection[i])
    end
  end
end

ary = [1, 2, 3]
i = IndexIterator.new(ary)
i.each do |obj|
  p obj
end

のようなケースです。

-- 
前田 修吾