【发布时间】:2011-04-20 21:02:18
【问题描述】:
这是一个简单的 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 中编写类似的生成器?
(问题是关于收益回报语句)
谢谢!
更新。 那很有意思。因为我只是在生成一个数学序列,所以使用recurrence 可能是一个不错的选择。
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);
}
【问题讨论】:
-
请注意,您现在应该可以编写 fib.take(10),因为统一函数调用语法已得到增强。