トップ «前の日(11-14) 最新 次の日(11-16)» 追記   RSS 1.0 FEED  

Journal InTime


2002-11-15 (Fri)

_ C#のイテレータ

C#では

foreach (Object o in list) {
  ...
}

のようにforeach文を使うと、listから外部イテレータを取り出して自動的に 繰り返し処理の制御を行ってくれる。 実は前にJavaで書いたスクリプト言語でも同じようなことをしたけど、利用者 側から見れば内部イテレータのように使える(つまり、自分で繰返しの制御をする 必要がない)ので結構便利。

さらに将来のC#では、イテレータを定義する時に

public class List {
  internal object[] elements;
  internal int count;

  public object foreach()
  {
    foreach(object o in elements)
    {
      yield o;
    }
  }
}

のようなコードを書くと、外部イテレータクラスを自動的に生成してくれるらしい。

ruby-devでこれは外部イテレータか内部イテレータかという話があったが、ユーザ が外部イテレータクラスを意識する必要はないので、内部イテレータと言ってもいい ような気がする。