1
2
3
val values = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

val sum = values.foldLeft(0)( + )

とするとsum=55となる。 foldLeftの引数が初期値。


Longにしたい場合は、

1
val sum = values.foldLeft(0L)( + .toLong)


で、foldLeftの省略形(なのかな?)が、

1
val sum = (0L /: values){ + .toLong}


変数はイミュータブルを使い、ループで回さないのが関数型言語的だそうです。

参考にしたサイト

http://www.ne.jp/asahi/hishidama/home/tech/scala/sample/sum.html
http://d.hatena.ne.jp/Naotsugu/20100523/1274636814