scala - 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]。
有人能帮我吗?谢谢
解决方案
您的List
班级缺少一个伴随对象。调用List(1,2,3)
构造一个默认的 Scala List
,而不是你的列表。
你需要添加这样的东西(???
用真正的构造函数替换,可能使用一些递归函数):
object List {
def apply[A](s: A*) = ???
}
推荐阅读
- javascript - 发出发布请求时出现NodeJS CORS错误
- alignment - 语法错误:预期的操作数(错误标记是“))”)
- javascript - 清空/清除 DOM 上的元素
- javascript - Mapbox 显示 Lat 和 Lng 并缩放,然后将它们放在文本框中
- javascript - 如何用JS制作列表并用localStorage保存
- java - 该路径不属于 Android Studio 中的目录
- javascript - 如何让光滑的滑块在 Shopify 中显示?
- kubernetes - Kubernetes 后端组合?
- python - 使用 Python 从网站中提取日期
- arrays - C - free() 后程序崩溃