1
我是一名scala和函数式编程的初学者,并试图学习基础知识。为此我开始阅读Functional Programming In Scala这本书。与一组,他们已经定义了一个List类的练习开始(如下复制)我如何在标准scala库中定义影子特征
sealed trait List[+A]
case object Nil extends List[Nothing]
case class Cons[+A](x: A, xs: List[A]) extends List[A]
object List {
def sum(ints: List[Int]) = ints match {
case Nil => 0
case Cons(x, xs) => x + sum(xs)
}
def product(ds: List[Double]) = ds match {
case Nil => 1.0
case Cons(x, xs) => x * product(xs)
}
def apply[A](as: A*): List[A] =
if (as.isEmpty)
Nil
else Cons(as.head, apply(as.tail: _*))
}
这应该工作。但是当我尝试在scala工作表(IntelliJ插件)中执行相同的操作时,我发现错误的方法sum
和product
无法应用于此类函数定义(抛出的确切错误为Type mismatch, required Byte/Char/Int/Double...., found Any
)。所以我的问题是如何覆盖我的包中定义的特征/工作表中scala库中定义的数据结构。
感谢Suma,实际上工作表本身存在一些问题。重新启动IntelliJ并评估工作表时,我指出了与您相同的提示。 – gashu 2015-02-24 09:38:28