On 2.7.5.final, tôi đang cố gắng để thêm một danh sách Iterable của Ints như vậyScala: tràn mặc dù sử dụng lâu khi thêm
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)
Khi tôi chạy, tôi nhận được
2147483647
0
4294967293
Và, bạn có thể nói "sử dụng reduceLeft (_ + _)", nhưng dường như chỉ có thể trả về cùng loại với các phần tử trong danh sách ... nhưng tôi muốn tích lũy thành Long, vì vậy tôi không ' t có vấn đề tràn.
Cập nhật 2009-10-28
Đây là một lỗi trong phạm vi, như đã chỉ ra bởi Eastsun. Báo cáo này được báo cáo cho nhóm Scala theo số ticket 2535
Hmm, println (sum (Danh sách (Integer.MAX_VALUE - 1, Integer.MAX_VALUE))) mang 4294967293. này có cái gì để làm với các 'thành' phương pháp tôi nghi ngờ. Câu hỏi thú vị! –