在斯卡拉如何將fold
作爲for-comprehension
實現?我看到唯一的方法是使用一些遞歸調用?這是一個失敗的嘗試,不知道如何做到這一點?什麼是執行fold
爲for-comprehension
實現摺疊與理解
val nums = List(1,2,3)
nums.fold(0)(_+_)
def recFold(acc: Int = 0): Int = {
(for {
a <- nums
b = recFold(a + acc)
} yield b).head
}
recFold(0) //Stack overflow
我對scala沒有太豐富的經驗,但我沒有看到從你的遞歸調用返回的基本情況? –
使用'頭部'是不安全的 – cchantep