【发布时间】:2020-08-21 16:30:39
【问题描述】:
我开始进入 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)
}
非常感谢您的帮助!提前致谢。
【问题讨论】:
-
List 以及 Scala 中的大多数东西都是不可变的。
ls0 :+ i生成一个新列表,将值添加到列表末尾,然后丢弃结果;最后ls0仍然是一个空列表。 - 顺便说一句,在列表末尾添加元素非常慢。 -
谢谢!那么在这里正确执行此操作的方法是什么? (顺便说一句,我需要对另一个列表进行迭代,原因未在代码中显示)
-
实际上有很多方法,这取决于您的最终目标。你可以只写一个 (tail) 递归算法。您可以使用
var而不是val并不断改变引用。你甚至可以用map替换原来的List。随着您继续作业,您将学习所有这些方式,我建议您再看一下您的笔记或使用其他学习材料,那里有很多书籍/博客/课程/视频。 -
非常感谢您的回答,非常感谢!祝你有美好的一天!