我有一些代码,比如在Foo.scala
中可以轻松编译scalac
,
但是当我启动REPL并说:load Foo.scala
时,我遇到了一连串的错误。
我想这是标准的和有记录的,但似乎无法找到任何相关的
有关它的信息。
该文件如下所示:
abstract class BST[A](implicit cmp: A => Ordered[A]) {
def fold[B](f: (B, A) => B, acc: B): B = {
this match {
case Leaf() => acc
}
}
}
case class Leaf[A]()(implicit cmp: A => Ordered[A]) extends BST[A]
我得到的错误是这样的:
scala> :load BST3.scala
Loading BST3.scala...
<console>:10: error: constructor cannot be instantiated to expected type;
found : Leaf[A(in class Leaf)]
required: BST[A(in class BST)]
case Leaf() => acc
^
答案 0 :(得分:2)
看起来:load
尝试逐块解释文件。由于您的块是相互依赖的,这是一个问题。
尝试使用“粘贴模式”将多个块粘贴到REPL中以便Scala一起编译:
scala> :paste
// Entering paste mode (ctrl-D to finish)
abstract class BST[A](implicit cmp: A => Ordered[A]) {
def fold[B](f: (B, A) => B, acc: B): B = {
this match {
case Leaf() => acc
}
}
}
case class Leaf[A]()(implicit cmp: A => Ordered[A]) extends BST[A]
// Exiting paste mode, now interpreting.
defined class BST
defined class Leaf