Scala模式匹配:+ +:运算符

时间:2014-04-30 23:17:28

标签: scala pattern-matching

我对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运行它

1 个答案:

答案 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

没有这样的提取器。