【问题标题】:What does word "acc :" means in Scala?Scala 中的“acc :”这个词是什么意思?
【发布时间】:2019-12-22 20:08:09
【问题描述】:

我有作业需要解释单词“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)

这只是一个变量还是其他什么?

【问题讨论】:

  • 我猜它的意思是“累加器”。看起来你在列表中收集了一些东西。

标签: scala scala-collections


【解决方案1】:

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

在 Scala 中,您可以使用 :: 运算符构建 List,将列表的头部放在左侧,尾部放在右侧,如下所示

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

1 :: acc

【讨论】:

  • 想扩大一点吗?问题要求acc::,而不仅仅是acc
  • 我添加了一些关于::的信息,这是List的一个方法
  • 有关List的更多信息,请阅读alvinalexander.com/scala/scala-list-class-examples
  • 谢谢您的回答
  • 如果它解决了您的问题,您能接受吗?谢谢
【解决方案2】:

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

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

如果你有这样的价值

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

还有这样的比赛

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

那么在=> 之后的代码中,n 将是5acc 将是1。所以这个表达式的结果将是(5, List(5, 1))

0 值未被捕获,因为匹配值为 _

【讨论】:

  • 谢谢您的回答
猜你喜欢
  • 2018-10-29
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 2023-03-27
  • 2010-11-10
  • 1970-01-01
相关资源
最近更新 更多