所以我跟随fpinscala并且我有这个对象:
sealed trait List[+A]
case object Nil extends List[Nothing]
case class Cons[+A](head: A, tail: List[A]) extends List[A]
object List {
def sum(ints: List[Int]): Int = ints match {
case Nil => 0
case Cons(x, xs) => x + sum(xs)
}
def product(ds: List[Double]): Double = ds match {
case Nil => 1
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: _*))
def tail[A](as: List[A]): List[A] = as match {
case Nil => as
case Cons(_, xs) => xs
}
def setHead[A](as: List[A], a: A): List[A] = as match {
case Nil => Cons(a, Nil)
case Cons(_, xs) => Cons(a, xs)
}
def main(args: Array[String]): Unit =
println(tail(List(1,2,3)))
}
当我尝试运行main时,我得到:
error: type mismatch;
found : List[Int] (in scala.collection.immutable)
required: List[?] (in <empty>)
println(tail(List[Int](1,2,3)))
我完全按照这本书,所以我不知道我在这里失踪了什么。它说你现在应该可以调用List(1,2,3,4)或List(&#34; hello&#34;,&#34; goodbye&#34;),没有任何问题。但是我无法将其传递给函数?我很欣赏有关我失踪的一些见解。
答案 0 :(得分:3)
代码编译正确,我看到的唯一问题是你在List伴侣对象中声明main方法并且这是不正确的,你应该将它移动到其他对象:
npm install ion2-calendar moment --save