“ acc:”一词在Scala中意味着什么?

时间:2019-08-16 13:38:34

标签: scala scala-collections

我的作业需要解释“ acc ::”一词,但在任何地方都找不到,需要帮助吗?

我已经从https://www.scala-lang.org/api/2.12.8/index.html阅读了Scala标准库,但仍然找不到它。我还阅读了Scala https://underscore.io/training/courses/essential-scala/的电子书,但仍然找不到。

(n::acc.head) :: acc.tail

case (n, ( _ ,acc)) => (n, List(n) :: acc)

这仅仅是变量还是其他?

2 个答案:

答案 0 :(得分:1)

acc在Scala中不是保留字,在您的代码中似乎是一个表示累加器的val(看起来像List

在Scala中,您可以使用List运算符来构建::,如下所示:

1 :: 2 :: Nil // List(1, 2)
如果您已经拥有列表acc,则可以通过添加

1 :: acc

答案 1 :(得分:0)

在您的第一个示例中,范围内的某处将有一个名为acc的变量或参数。

在第二个示例中,acc是声明为match一部分的新变量。

如果您具有这样的值

val x = (5, (0, 1))

和这样的比赛

x match {
  case (n, (_ ,acc)) => (n, List(n) :: acc)
}

然后在代码=>之后,n将是5,而acc将是1。因此,该表达式的结果将为(5, List(5, 1))

由于匹配值为0,因此未捕获_值。