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