poh*_*ohl 3 performance scala reasoning scala-2.9
可能重复:
减少Scala中的循环?
在通过Scala For The Impatient进行工作时,我接受了以下练习:
Write a Scala equivalent for the Java loop for (int i = 10; i >= 0; i--) System.out.println(i);
我花了很长时间才提出以下解决方案:
for (i <- 1 to 10 reverse) {
println(i)
}
Run Code Online (Sandbox Code Playgroud)
然而,这让我想知道如何推断这样做的成本.反向方法是否进行了范围的O(n)遍历,还是用一些花式索引算法来装饰它?还有其他结构可以做得更好吗?
om-*_*nom 18
你总是可以选择步骤:
for (i <- 10 to 1 by -1) {
println(i)
}
Run Code Online (Sandbox Code Playgroud)
根据你关于复杂性的问题.你也可以使用反转,因为在覆盖范围内新的范围将以反向顺序创建(它是O(1)操作):
final override def reverse: Range =
if (length > 0) new Range.Inclusive(last, start, -step)
else this
Run Code Online (Sandbox Code Playgroud)
这是非常不变的