gpt4 book ai didi

scala - Scala 中使用索引进行高效迭代

转载 作者:行者123 更新时间:2023-12-03 05:16:04 25 4
gpt4 key购买 nike

由于 Scala 没有带索引的旧 Java 风格 for 循环,

// does not work
val xs = Array("first", "second", "third")
for (i=0; i<xs.length; i++) {
println("String #" + i + " is " + xs(i))
}

如何在不使用 var 的情况下高效地进行迭代?

你可以这样做

val xs = Array("first", "second", "third")
val indexed = xs zipWithIndex
for (x <- indexed) println("String #" + x._2 + " is " + x._1)

但是列表被遍历了两次 - 效率不高。

最佳答案

比遍历两次更糟糕的是,它创建了一个中间的对数组。您可以使用查看。当您执行collection.view时,您可以将后续调用视为在迭代过程中惰性执行。如果您想返回一个正确的完全实现的集合,请在最后调用 force 。在这里,这将是无用且昂贵的。因此将您的代码更改为

for((x,i) <- xs.view.zipWithIndex) println("String #" + i + " is " + x)

关于scala - Scala 中使用索引进行高效迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833501/

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