トップ «前の日記(2002-11-15 (Fri)) 最新 次の日記(2002-11-20 (Wed))» 編集   RSS 1.0 FEED  

Journal InTime


2002-11-18 (Mon) [長年日記]

_ C#のイテレータ(2)

ruby-devでも書いたけど、C#のイテレータだと一つのクラスに複数の イテレータを定義できないので不便な気がする。

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

  // Elementsという名前のイテレータ定義
  public iterator object Elements()
  {
    foreach(object o in elements)
    {
      yield o;
    }
  }
}

のように色々な名前でイテレータを定義できるようにして(実装的には Elementsという名前のメソッドで外部イテレータを返すようにする)、

foreach (object o in list.Elements()) {
  ...
}

のようにforeach文で、コレクション(list)の代りに、イテレータ呼び 出し(外部イテレータを返すメソッドのよび出し - list.elements())を 指定するようにした方がCLU風味でよくないだろうか。