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