На 2.7.5.final я пытаюсь добавить итерируемый список Ints, например,
def sum(xs: Iterable[Int]): Long = {
var sum = 0L
xs.foreach((x) => sum = sum + x)
sum
}
println(sum(List(1, Integer.MAX_VALUE - 1)))
println(sum(Integer.MAX_VALUE - 1 to Integer.MAX_VALUE))
println(0L + Integer.MAX_VALUE - 1 + Integer.MAX_VALUE)
Когда я бегу, я получаю
2147483647
0
4294967293
И вы могли бы сказать «использовать reduLeft (_ + _)», но кажется, что он может возвращать только тот же тип, что и элементы в списке ... но я хочу накапливать в Long, поэтому я не проблем с переполнением.
Обновление 2009-10-28
Это ошибка в Range, как указывает Eastsun. Об этом сообщается команде Scala в билете 2535