【发布时间】:2018-05-08 18:28:15
【问题描述】:
所以我读到了右关联运算符,例如 Scala 中的 cons 运算符。我想知道为什么它们在案例陈述中起作用。看来您可以在这里使用 cons 语句进行模式匹配?
def findKth1[A](k:Int, l:List[A]):A = (k, l) match {
case (0, h::_) => h
case(k, _::tail) if k > 0 => findKth1(k - 1, tail)
case _ => throw new NoSuchElementException
}
findKth1(2, List(3,4,5,6))
res1: Int = 5
占位符在这里做什么?我只见过这样的函数中使用的占位符:<SomeList>.map(_.doThing)。是同一个概念吗?
:: 和 ::: 的唯一区别是 ::: 用于 2 个列表,对吗?
【问题讨论】:
-
“占位符”到底是什么意思?
_?这只是意味着您实际上并不想将那里的内容绑定到实际的命名绑定。第一种情况只在头部匹配;第二种只匹配尾部,最后一种情况是默认情况。 -
这个模式真的匹配元组吗?
-
@Jwan622 是的。看起来像。我无法编辑我的原始评论,但“仅在头部”指的是元组中的第二个元素。
标签: scala