我有一个深度“嵌套”的理解,简化为以下 3 个级别:x、y 和 z。我希望只做 xaStream
也会使 y 和 z 计算变得懒惰:
val stream = for {
x <- List(1, 2, 3).toStream
y <- List("foo", "bar", "baz")
z = {
println("Processed " + x + y)
x + y
}
} yield z
stream take (2) foreach (doSomething)
但这计算了所有 3 个元素,如 3 个打印件所证明的那样。我只想计算前 2 个,因为这些都是我从流中获取的。toStream
我可以通过调用第二个等来解决这个List
问题。有没有比在理解的每个层面都调用它更好的方法?