2
私はこのようなケースクラスがあります。Scalaの再帰的なケースクラスの減少
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を与えると私は見ます私は再帰のどこかで細かいディテールが不足していて、どこを見ることができないのですか?すべての手がかりは?そこ
再帰するときには、加算されていない、プラスあなたはアキュムレータを返していません。 –
あなたはそれを詳しく説明できますか?それをしても、私はまだ3を得る! – sparkr
再帰呼び出しでは、 'acc'に' i'を追加する必要があります: 'all(acc + test.i、test.t.get)'。 –