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でこれは外部イテレータか内部イテレータかという話があったが、ユーザ が外部イテレータクラスを意識する必要はないので、内部イテレータと言ってもいい ような気がする。
[ツッコミを入れる]