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

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

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

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

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

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