我正在研究Underscore的Essential Scala教科书,当我尝试使用:load命令在命令行中使用示例之一时,出现错误。 [edit]我说过命令行,我指的是控制台。
我已经将代码本身放入了文件中,然后尝试通过:load命令使用它。
sealed trait IntList {
def product: Int =
this match {
case End => 1
case Pair(hd, tl) => hd * tl.product
}
}
case object End extends IntList
final case class Pair(head: Int, tail: IntList) extends IntList
我希望代码可以编译并可以使用,但是我得到以下消息:
error: pattern type is incompatible with expected type;
found : End.type
required: IntList
case End => 1
和
error: constructor cannot be instantiated to expected type;
found : Pair
required: IntList
case Pair(hd, tl) => hd * tl.product
答案 0 :(得分:0)
在Scala REPL中使用:paste
命令:
scala> :paste
// Entering paste mode (ctrl-D to finish)
sealed trait IntList {
def product: Int =
this match {
case End => 1
case Pair(hd, tl) => hd * tl.product
}
}
case object End extends IntList
final case class Pair(head: Int, tail: IntList) extends IntList
// Exiting paste mode, now interpreting.
defined trait IntList
defined object End
defined class Pair
scala>
P.S。完成所有行的粘贴后,只需按ctrl-D
。