2012-09-28 30 views
2

這可能是一個基本的斯卡拉問題,但無法弄清楚如何:Scala的for循環 - 2 *我下一個循環

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

怎麼可以這樣Java循環使用斯卡拉表示

我明白這是一個可能的方式:

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

但是,有沒有在斯卡拉做到這一點更規範的方法。

+1

我猜你的意思是'INT I = 1'取代'INT I = 0' – sschaef

+0

是的,更正了,謝謝 –

回答

5

可以使用iterate功能從Iterator(或從其他類,如StreamList等):

Iterator.iterate(1)(_*2).takeWhile(_ < 100000) foreach {...} 
+3

'for(n < - Iterator.iterate(1)(2 *)。takeWhile(100000>)){...}' –

+0

@KimStebel:我想你是指'2 * _'而不是'2 **' – sschaef

+0

謝謝sschaef和@KimStebel - 你的答案都很好用 –