在斯卡拉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为我消耗大量内存。我无法理解为什么.. –