我有一个这样的案例类:
case class Test(i: Int, t: Option[Test])
我现在想减少这个案例类并添加所有的i。例如,如果我有这样的输入
val x = Test(1, Some(Test(2, Some(Test(3,None)))))
我希望结果是6,这是我到目前为止所尝试的:
def all(acc: Int, test: Test): Int = {
if (test.t.isDefined)
all(acc, test.t.get)
else
acc + test.i
}
这给了我3,我看到我在递归的某个地方错过了一个小细节,我无法看到哪里!有线索吗?
答案 0 :(得分:1)
你去了:
draft-js
没有累加器的版本:
def sum(acc: Int, test: Test): Int = {
test.t match {
case Some(x) => sum(acc + test.i, x)
case None => acc + test.i
}
}