を追加し、私は実行すると、私はスカラ:ロングの使用にもかかわらず、オーバーフロー2.7.5.finalで
2147483647
0
4294967293
を取得するので、
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)
のようにint型の反復処理可能なリストを追加しようとしています
そして、あなたは "reduceLeft(_ + _)"を使うかもしれませんが、リスト内の要素と同じ型しか返せないようです...しかし、私はLongに蓄積したいので、オーバーフローの問題があります。
更新2009-10-28
Eastsunで指摘したようにこれは、レンジのバグです。 Scalaチームに報告されましたticket 2535
うーん、のprintln(合計(一覧(Integer.MAX_VALUEで - 1は、Integer.MAX_VALUE)))これは私が疑われる 'から' 法とは何かを持っている〜4294967293を生み出します。興味深い質問! –