gpt4 book ai didi

scala - 在 Scala 中创建动态增长数组的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 08:26:37 26 4
gpt4 key购买 nike

我想将项目动态添加到数组中。但是由于不可变的性质,Scala 数组和列表似乎没有提供任何动态添加项目的方法。

所以我决定使用List数据类型来利用这个::方法来实现这一点。我的代码看起来像这样

var outList = List(Nil)
val strArray = Array("ram","sam","bam")

for (str<-strArray)
outList = str :: outList

尽管它以某种方式起作用,但问题是新字符串已预先附加到列表中。但理想的要求是数据的顺序。是的,我知道你在想什么,你可以颠倒最终结果列表以获得原始顺序。但问题是它是一个巨大的数组。而且我相信这不是解决方案,尽管它解决了问题。我相信应该有一个简单的方法来解决这个问题......

而我使用 Scala 的原因是学习函数式编码方式。拥有 无功 (可变类型)并动态填充列表在我看来并不是解决问题的功能性方法。

我该怎么做?

理想情况下,我想在 Scala 中实现类似的功能(在 C# 代码下方)
List<int> ls = new List<int>();    
for (int i = 0; i < 100; i++)
ls.Add(i);

最佳答案

But it seems Scala Arrays & Lists doesn't provide any methods for adding items dynamically due to the immutable nature.



嗯,不。 Scala 数组只是 Java 数组,因此它们是可变的:
val arr = Array(1,2)

arr(0) = 3 // arr == Array(3, 2)

但就像 Java(和 C/C++/C#/etc.)数组一样,你不能改变数组的大小。

所以你需要另一个集合,它由一个数组支持,但允许调整大小。 Scala 中合适的集合是 scala.collection.mutable.ArrayBuffer , java.util.ArrayList 在 Java 等

如果您想获得 List而不是 Array最后,使用 scala.collection.mutable.ListBuffer 反而。

关于scala - 在 Scala 中创建动态增长数组的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3368888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com