gpt4 book ai didi

scala - 使用 head::tail 匹配列表的模式(使用什么模式)?

转载 作者:行者123 更新时间:2023-12-05 08:22:17 26 4
gpt4 key购买 nike

the Scala spec有 14 种“命名”模式的定义(不包括“模式绑定(bind)器”),我无法确定以下模式的正确类别:

示例 1

List("A", "B", "C") match {
case head :: Nil => ???
case "A" :: _ :: Nil => ???
case head :: tail => ???
}

这纯粹是学术性的,因为我希望能够引用规范中的命名模式。因此,问题是关于如何解释规范以及在针对列表引用这些类型的模式时如何准确。

例如 1,它是否是“11. Infix Operation pattern”,因为 ::(又名 Cons)正在使用中缀?或“7. Constructor Pattern ”作为 :: 是构造函数?或者,如果我们通过在列表 (L3) 的特定位置使用文字使其复杂化,是否会调用“4. Literal Patterns”?

也许是更简单的情况?

例子2

List(1, 4, 2, 5) match {
case Nil => ???
case head :: tail => ???
}

根据使用的模式,我们会如何命名?

最佳答案

它是中缀操作模式 (8.1.11) 作为构造函数模式 (8.1.7) 的简写。

单独使用构造器模式,示例 2 如下所示:

List(1, 4, 2, 5) match {
case Nil => ???
case ::(head, tail) => ???
}

关于scala - 使用 head::tail 匹配列表的模式(使用什么模式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63713640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com