Scala递归Case类减少

时间:2016-06-20 15:28:43

标签: scala recursion

我有一个这样的案例类:

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,我看到我在递归的某个地方错过了一个小细节,我无法看到哪里!有线索吗?

1 个答案:

答案 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
  }
}