【发布时间】:2020-08-21 18:01:41
【问题描述】:
我需要一些关于 scala 代码的帮助,我想实现 foldL 方法但我得到了这个:
asd.scala:73: error: type mismatch;
found : Option[MyTree[A]] => B
required: B
def myFoldLeft[B](z: B)(op: (B, A) => B): B = (_:Option[MyTree[A]]) match {
^
one error found
我知道那是类型不匹配,但我是 scala 和定向对象的新手,我不知道 了解如何解决这种情况。
class MyTree[A](val value: A, val left:Option[MyTree[A]],
val right:Option[MyTree[A]]) {
def myFoldLeft[B](z: B)(op: (B, A) => B): B = (_:Option[MyTree[A]]) match {
case Some(tree) => right.get.myFoldLeft (left.get.myFoldLeft (op(z, value)) (op)) (op)
case None => z
}
}
【问题讨论】:
-
您的
myFoldLeft正在返回一个函数Option[MyTree[A]] => B,而不是您说它会返回的B。原因是这样的:(_:Option[MyTree[A]])下划线延伸到(x :Option[MyTree[A]]) => x match。我相信你想要的只是this.match,但它不是和Option。您可能需要重新考虑您的功能。