在斯卡拉2.9.1,這工作得很好:爲什麼會Scala範圍迭代器緩衝區 - 有時候?
scala> (1 to Int.MaxValue).sum
res6: Int = -1073741824
然而,這種耗盡的堆空間:
scala> (1 to Int.MaxValue).toIterator.sum
java.lang.OutOfMemoryError: GC overhead limit exceeded
但令人惱火,這個工程:
scala> (1 to Int.MaxValue).iterator.sum
res8: Int = -1073741824
爲什麼要任何那些有所不同?
換句話說,這是一個錯誤;帶有'iterator'方法的類(至少不可變的方法)應該重寫'toIterator'來簡單地調用'iterator'。 –
是的,夜間修復。 – Debilski
我正在使用2.10.3和(1到Int.MaxValue).iterator.sum爲我消耗大量內存。我無法理解爲什麼.. –