Scala 追加列表

Scala appending List

我开始接触 Scala 以完成一项作业,并且我一直在寻找如何将项目添加到列表中大约一个小时。我当然找到了几个解决方案,下面截取的代码确实可以编译,但生成的列表只是空的。谁能告诉我这是为什么?

  case NodeList(ls) => {
      var ls0 = List()
      ls.foreach {
        println("hey") // => printed 3 times
        i => ls0 :+ i
      }

      println(ls0) // => Empty list as output (ls contains 3 items when called)
  }

非常感谢您的帮助!提前致谢。

您正在向列表中追加一个项目,但您从未存储生成的新列表。基本上,您追加一个项目,然后丢弃结果,再次追加,再次丢弃,依此类推。

您需要将列表存储在某处。

请注意,附加到列表不是一个好主意:您必须遍历整个列表以找到最后一个元素,然后在下次附加时,您必须一次又一次地执行此操作。这意味着您的代码具有 (n^2 - n)/2 的算法复杂度,而在 Θ(n) 中可以轻松完成相同的操作。您应该始终添加到列表中,切勿追加。