0
我有一個深深的「嵌套」的理解,簡化到3層以下:x,y和z。我希望做只有X A Stream
將使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個打印證明。我只想計算前兩個,因爲這些都是我從流中提取的。我可以通過在第二個List
等上調用toStream
來解決此問題。有沒有更好的方法比在理解的每個級別上調用?
澄清我的問題。我不打算z是'單位'。現在有3個打印前面,即使我只採取流的前2個元素和'doSomething'。我如何使第三次打印(「計算」)不會發生? – Bluu 2012-03-24 06:32:07
@Bluu這三個計算是針對'y'的每個元素,應該從「1」數字中清楚。就像我說的,頭部總是被評估。嘗試'流4取foreach println',你會看到,第二批只計算前3後採取 – 2012-03-24 06:39:17
我現在看到。謝謝。爲了嚴格評估head_的頭部,這就是爲什麼我需要調用List(「foo」,「bar」,「baz」)。toStream'。你知道有什麼方法嗎? – Bluu 2012-03-24 18:08:58