我的作业需要解释“ 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)
这仅仅是变量还是其他?
答案 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
,因此未捕获_
值。