Kotlinのスコープ関数は変数減らしに使えるだろうか

JavaScriptでプログラムを書いていた際、途中の計算結果を入れるためだけの変数が多くなってしまったので、こういうのをどうにかできないかと悩んでいました。Kotlinにあるスコープ変数ならできそうだということで、実装してみました。JavaScriptではすでにprototypeの利用でどうにかしている人もいるのかもしれませんが。

特にリンクを載せる意味もないですがコード全体はこちら

[Kotlinのrun関数(http://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e#run)]を使い、よくある実装では一時的な変数をいくつか用意することになる場面でも、シンプルに書くことができます。
ここではaverageを使わずに平均と分散を求めてみます。

val mean = array.run { sum() / count() }
val variance = array.run {
    map { it * it }.run { sum() / count() } - ( sum() / count()) * ( sum() / count())
}

これは意図的な例ではありますが、実際上は変数名を考える手間を減らせるので、結構役に立つんじゃないかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です