2

这可能是一个基本的 scala 问题,但无法弄清楚如何:

如何使用 Scala 来表达这个 java 循环:

for (int i=1;i<100000;i=2*i)

我知道这是一种可能的方式:

  def loopByTwiceBefore(from:Int, to:Int)(f:Int=>Unit):Unit = {
    if (from<to){
        f(from)
        loopByTwiceBefore(from*2, to)(f);
    }
  }  

但是在 Scala 中有没有更规范的方法来做到这一点。

4

1 回答 1

5

您可以使用iterate来自Iterator(或来自其他类Stream,如List等)的函数:

Iterator.iterate(1)(_*2).takeWhile(_ < 100000) foreach {...}
于 2012-09-28T20:12:14.497 回答