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風味でよくないだろうか。
[ツッコミを入れる]