[英]Scala: Unspecified value parameter error when trying to create binary tree using fold on sequence of elements
我试图在scala中写一个二叉树。 这是我的定义
sealed trait Tree[+T]
final object Empty extends Tree[Nothing]
final case class Leaf[A](value: A) extends Tree[A]
final case class Branch[A](elem: A, left: Tree[A], right: Tree[A]) extends Tree[A]
object BinaryTree {
def insert[ A : Ordering] (t : Tree[A])(implicit elem : A): Tree[A] = {
val order = implicitly[Ordering[A]]
t match {
case Empty => Leaf(elem)
case Leaf(x) if (elem == x) => t
case Leaf(x) if (order.lt(elem, x)) => new Branch(elem, Empty, new Leaf(x))
case Leaf(x) => new Branch(elem, new Leaf(x), Empty)
case Branch(x, left, right) if (elem == x) => t
case Branch(x, left, right) if (order.lt(elem, x)) => new Branch(x, insert(left), right)
case Branch(x, left, right) => new Branch(x, left, insert(right))
}
}
def apply[A: Ordering](as: A*): Tree[A] =
as.tail.foldLeft[Tree[A]](Leaf(as.head))((t, elem) => BinaryTree.insert(t)(elem))
}
在我的BinaryTree.apply方法中,出现以下错误
"Unspecified value parameters: elem : A"
不知道那是什么意思还是我错过了什么。 谁能帮我一下
如果使用上下文绑定和隐式参数,则所有参数(包括上下文绑定)都将形成一组参数,该参数集位于最后。
因此,您的insert
签名:
def insert[A: Ordering] (t: Tree[A])(implicit elem: A)
类似于:
def insert(t: Tree[A])(implicit o: Ordering[A], elem: A)
这意味着在调用insert
时不应传递o
和elem
参数,也不要同时传递它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.