我在理解为什么这段代码不起作用时遇到了一些麻烦。我从二叉树的99个Scala问题中获得了它(http://aperiodic.net/phil/scala/s-99/)。它对我来说看起来很有效:Node对象是Node类的伴侣对象,并且它为树上的叶子添加了构造函数。但是当我尝试编译它,我得到如下:Scala中的伴侣对象并没有将自己与案例类相关
<console>:10: error: too many arguments for method apply: (value: T)Node[T] in object Node
def apply[T](value: T): Node[T] = Node(value, End, End)
如果我删除两端,我没有得到任何编译错误,但如果我做一个节点相同的值我无限卡住循环。所以它看起来像应用程序正在构建更多的节点对象,并没有将自己与节点类关联起来。
任何帮助表示赞赏。
sealed abstract class Tree[+T]
case class Node[+T](value: T, left: Tree[T], right: Tree[T]) extends Tree[T] {
override def toString = "T(" + value.toString + " " + left.toString + " " + right.toString + ")"
}
case object End extends Tree[Nothing] {
override def toString = "."
}
object Node {
def apply[T](value: T): Node[T] = Node(value, End, End)
}
scalac很好地从源文件编译它。我很确定这只是一个控制台问题。 – CheatEx 2011-06-09 08:21:40