我对Scala模式匹配中的:+和+:运算符感到困惑。
我有以下函数应该返回列表中的最后一个值
object Solution {
def last[A](seq: Seq[A]) : A = seq match {
case head +: Nil => head
case head +: tail => last(tail)
}
def main(args: Array[String]) {
println("1: " + last(List(1, 2, 3, 4)))
}
}
但是在运行代码时我收到了一些错误
error: not found: value +:
error: not found: value head
error: not found: value +:
error: not found: value tail
我在这里缺少什么?
编辑:我正在使用Scala 2.9.2运行它
答案 0 :(得分:4)
提取器是对象,因此您要查找+:
。
在2.11上,
scala> +:
res0: collection.+:.type = scala.collection.$plus$colon$@5f2050f6
但比较
http://www.scala-lang.org/api/2.11.0/#scala.collection.$plus$colon$
与
http://www.scala-lang.org/api/2.9.2/#scala.collection.package
没有这样的提取器。