1
我是新来的斯卡拉和通过这本书的工作(Function Programming in Scala)。其中一项练习涉及复制Option
特征及其功能。不过,我在REPL中编译我的解决方案时遇到问题。特征体内的Scala类型匹配函数
sealed trait Nullable[+A] {
def get[B >: A](default: => B) : B = this match {
case Value(v) => v
case Null => default
}
}
case class Value[+A](value: A) extends Nullable[A]
case object Null extends Nullable[Nothing]
REPL错误细节:基于这些错误
error: constructor cannot be instantiated to expected type;
found : Value[A(in class Value)]
required: Nullable[A(in trait Nullable)]
case Value(v) => v
error: pattern type is incompatible with expected type;
found : Null.type
required: Nullable[A]
case Null => default
我有一个唠叨的感觉,该编译器不能推断this
的(即图案匹配)的类型为Nullable
。
我试过这个在线Scala utility代码块,它似乎编译和运行。我可以看到的唯一区别是,在线工具正在使用Scala版本2.10.3,并且我正在运行2.11.7
所以我不确定这是环境还是我需要帮助Scala编译器。我也试图从本书的作者编译answer,并得到相同的错误。
任何帮助将不胜感激。
当使用repl使用':paste'输入多行scala代码时,应该可以解决您的问题。 – Noah
是的,@Noah是对的。插入为块(即':pa')时,REPL(2.11.7)可以很好地编译它。 – jwvh
如果我使用':load'命令加载.scala文件,这仍然适用吗? – MtEdenCodeLab