Scala模式匹配:+ +: operator

标签 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 运行它

最佳答案

提取器是对象,因此您需要查找+:

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

没有这样的提取器的地方。

关于Scala模式匹配:+ +: operator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399700/

相关文章:

algorithm - 银行实习生问题陈述

c# - 模式匹配变量范围

java - 将字母数字字符串转换为数字和字符串映射时生成的空映射

macos - sbt-native-packager用于Mac OS X上的Docker

scala - 如何在运行 sbt 时传递不同的配置文件?

scala - Spark : Unsupported literal type class scala. collection.immutable.Nil$ List()

scala - Scala 反射中的去混叠类型

scala - 具有多种类型的类型的仿函数实现

java - 在图像中查找特定颜色

c++ - 检测图像中的 U 形边缘