本物Iterator
3/29の似非Iteratorをgmcsで書き直してみました。
using System; using System.Collections; class MyApp { static IEnumerator Fibonacci() { int a = 0, b = 1, t; while (true) { yield return b; t = a; a = b; b = t + b; } } static void Main() { IEnumerator fib = Fibonacci(); // フィボナッチ数列の最初の要素 fib.MoveNext(); Console.WriteLine(fib.Current); // フィボナッチ数列の次の要素 fib.MoveNext(); Console.WriteLine(fib.Current); Console.WriteLine("Hit any key!"); Console.ReadLine(); // 更に10個 for (int i = 0; i < 10; ++i) { fib.MoveNext(); Console.WriteLine(fib.Current); } Console.WriteLine("\nHit any key!"); Console.ReadLine(); // おまけにもう一つ fib.MoveNext(); Console.WriteLine(fib.Current); } }
ほとんど同じように組めますね。ウソを吐かずに済みました(^^;