【问题标题】:Scala Pattern Matching :+ +: operatorScala 模式匹配 :++: 运算符
【发布时间】:2014-04-30 23:17:28
【问题描述】:

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

【问题讨论】:

  • 应该是“case head :: Nil => ...”
  • 你发布的代码对我有用
  • @EugeneZhulenev 不,:: 仅适用于 ListSeq 需要 +:
  • @0__ 你运行的是什么版本的 Scala?
  • 颠簸,因为提取器有点奇怪——见 cmets——尤其是一开始。我希望这能让反对者三思而后行。当然,通过“研究努力”,我们不是在谈论博士研究。但即使您知道如何定位 scaladoc,您也可能不知道要搜索什么。 PS)可怜那些因为任何原因停留在 2.9.2 上的人。

标签: scala pattern-matching


【解决方案1】:

提取器是对象,所以你要查找+:

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

没有这样的提取器。

【讨论】:

    猜你喜欢
    • 2018-06-04
    • 1970-01-01
    • 2015-10-07
    • 2010-12-07
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2016-05-17
    相关资源
    最近更新 更多