我想实现一个惰性迭代器,它在 3 级嵌套循环中的每次调用中生成下一个元素。
scala 中是否有与 c# 的这段代码类似的内容:
foreach (int i in ...)
{
foreach (int j in ...)
{
foreach (int k in ...)
{
yield return do(i,j,k);
}
}
}
谢谢杜杜
Scala 序列类型都有一个 .view 方法,它生成集合的惰性等效项。您可以在 REPL 中尝试以下内容(发出后:silent
阻止它强制集合打印命令结果):
def log[A](a: A) = { println(a); a }
for (i <- 1 to 10) yield log(i)
for (i <- (1 to 10) view) yield log(i)
第一个将打印出数字 1 到 10,第二个将打印出数字 1 到 10,直到您实际尝试访问结果的这些元素。
Scala 中没有与 C# 直接等效的内容yield
语句,它暂停循环的执行。您可以使用以下命令实现类似的效果分隔延续这是为 scala 2.8 添加的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)