【问题标题】:What does += do for list in Scala?+= 对 Scala 中的列表有什么作用?
【发布时间】:2021-02-08 09:03:57
【问题描述】:

+= 在这里做什么?这是否意味着附加到列表中? 如果 maxNodes = 16,以下行是否意味着值 0 到 15 存储在 NodeList 中?还是0到16?

var Nodelist = new ArrayBuffer[Int]()
for (i <- 0 until maxNodes) {     
          Nodelist += i  
 }

【问题讨论】:

  • 你为什么在这里问?当尝试时会发生什么?你有任何错误吗?你没有得到你期望的结果吗?你不了解你得到的结果吗?
  • @AlonsodelArte ArrayBuffer 是可变的。
  • Btw 不是 ListArrayBuffer,两个非常不同的东西,你不应该混淆它们的名字。
  • @Ava 哎呀,这是我的失误,我的意思是写“可变”。
  • 我昨天应该写的:“以这种方式使用像ArrayBuffer 这样的可变集合并不是非常惯用的Scala。写像var nodeList = 0 until maxNodes 这样的东西会容易得多。见@987654321 @" 正如@Ava 指出的那样,我被几个额外的音节弄糊涂了。除此之外,我坚持我所写的。

标签: list scala append prepend


【解决方案1】:

您只是将变量i 中的Integer 值附加到列表中。为什么不在 REPL 中试试这个?

【讨论】:

    【解决方案2】:

    According to the Javadoc, += in ArrayBufferaddOne() 的“别名”。所以一开始NodeList 是空的(我宁愿称它为nodeList)。在 For 循环的第一次执行中,整数 0 被添加到 NodeList。在下一次循环中,整数 1 将被添加到NodeList,依此类推。由于您使用了until 而不是to,因此迭代将停止在maxNodes 的不足处。

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 1970-01-01
      • 2021-04-29
      • 2019-03-09
      • 2015-07-09
      • 2021-09-10
      • 2021-04-27
      • 1970-01-01
      • 2012-10-19
      相关资源
      最近更新 更多