まつざきの技術メモ

エンジニアの私的な技術メモです。

Scalaの関数型言語的な集計ロジック

コメントする

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

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

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

Longにしたい場合は、

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

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

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

広告

作成者: まつざき

中堅企業向けERPサービスを提供してる会社で働くソフトウェアエンジニア Perl/Ruby/Java8/Erlang/Fluentd/PostgreSQL/MySQL/Riak/Debian

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中