我是Scala的新手,正在阅读本书(Function Programming in Scala)。其中一个练习涉及复制Option
特征及其功能。但是我在REPL中编译我的解决方案时遇到了问题。
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,我也得到了同样的错误。
非常感谢任何帮助。
答案 0 :(得分:0)
如果其他人有类似问题,则发布答案。
使用REPL :paste
命令加载.scala文件,而不是:load
命令。
感谢@noah和@jwvh的帮助。