在斯卡拉如何将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