首页 > 解决方案 > Scala 类型不匹配,预期:List[NotInferedA],实际:List[Int]

问题描述

我正在尝试在 Scala 工作表中执行这段代码(使用 Intellij):

我使用的 Scala 版本是 2.11.12

sealed trait List[+A]
case object Nil extends List[Nothing]
case class Cons[+A](head: A, tail: List[A]) extends List[A]

def tail[A](l: List[A]): List[A] =
  l match {
    case Nil => sys.error("tail of empty list")
    case Cons(_, t) => t
  }

val a = List(1,2,3)
tail(a) //should be List(2,3)

编译器给了我一个'类型不匹配,预期:List [NotInferedA],实际:List [Int]。

有人能帮我吗?谢谢

标签: scalatype-mismatch

解决方案


您的List班级缺少一个伴随对象。调用List(1,2,3)构造一个默认的 Scala List,而不是你的列表。

你需要添加这样的东西(???用真正的构造函数替换,可能使用一些递归函数):

object List {
  def apply[A](s: A*) = ???
}

推荐阅读