这是一个简单的 C# 生成器。
IEnumerable<int> Foo()
{
int a = 1, b = 1;
while(true)
{
yield return b;
int temp = a + b;
a = b;
b = temp;
}
}
如何在Digital Mars D 中编写类似的生成器?
(问题是关于产量回报声明)
谢谢!
更新。那很有意思。由于我只是在生成一个数学序列,因此使用递归可能是一个不错的选择。
auto fib = recurrence!("a[n-1] + a[n-2]")(1, 1);
foreach (e; take(fib, 10)) // <- prints first ten numbers from the sequence
{
writeln(e);
}