1
我目前正在嘗試學習Scala並強制我儘可能地使用函數式編程風格來處理。斯卡拉「takeWhile」流量混淆
下面的代碼有我不明白一個流程:
object Testing {
def XForm(i: Int) = {
println(i)
if (i < 3) "%d".format(i * i) else ""
}
def main(args: Array[String]) {
print(Range(0, 6).map(XForm).takeWhile(_.nonEmpty))
}
}
輸出如下:
0
1
2
3
4
5
Vector(0, 1, 4)
爲什麼呼籲值4和5 XForm
?我認爲使用takeWhile(比較過濾)的'循環'在第一次錯誤發生時被終止?
如何以不同的(功能樣式)方式解決此問題?
我在最後使用'force'只是爲了顯示結果,但您可以依靠簡單地訪問結果來強制評估。 –