因此,當我通過「Scala for the Impatient」工作時,我發現自己想知道:如果沒有序列,您可以使用Scala for循環嗎?For循環scala沒有序列?
例如,本書中有一項練習要求您構建一個無法在Integer.MAX_VALUE之前遞增的計數器對象。爲了測試我的解決方案,我寫了下面的代碼:
var c = new Counter
for(i <- 0 to Integer.MAX_VALUE) c.increment()
這將引發一個錯誤:序列不能包含Int.MaxValue元素更多。 在我看來,這意味着Scala首先分配並填充序列對象,值爲0到Integer.MaxValue,然後對該序列對象執行foreach循環。
我知道我能做到這一點,而不是:
var c = new Counter
while(c.value < Integer.MAX_VALUE) c.increment()
但有沒有辦法做一個傳統的C風格的for循環與for語句?
哇,一個具有挑戰性的答案,但一個很好的答案。我只是在學習Scala,所以你用了很多我只是不太熟悉的術語,但是謝謝。 –
'fromTo'的定義可以通過在'Stream'(或'Iterator')伴隨對象上使用'iterate'方法進一步簡化。 (def fromTo(from:Int,to:Int)= Stream.iterate(from,to - from)(_ + 1)')。但是使用'from to to'更加習慣並且達到同樣的效果。 –