在scala for循环中倒计时

时间:2012-05-08 13:33:36

标签: performance scala scala-2.9 reasoning

  

可能重复:
  Decreasing for loop in 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)
   }

然而,这让我想知道如何推断这样做的成本。反向方法是否进行了范围的O(n)遍历,还是用一些花式索引算法来装饰它?是否还有其他可以做得更好的结构?

1 个答案:

答案 0 :(得分:18)

您始终可以选择步骤:

for (i <- 10 to 1 by -1) {
       println(i)
}

根据你关于复杂性的问题。您也可以使用反转,导致覆盖新的范围will be created反转顺序(它是O(1)操作):

final override def reverse: Range =
    if (length > 0) new Range.Inclusive(last, start, -step)
    else this

这是非常不变的