by shigemk2

当面は技術的なことしか書かない

Scalaのクロージャ

概要

その関数のスコープにおける引数以外の変数を参照できる関数のこと。 引数以外の変数を関数を定義した境界(静的スコープ/レキシカルスコープ)から参照可能で、 その変数の生存期間はクロージャと同じとなる。

コード

def counter() = {
    var count = 0
    () => {
        count += 1
        count
    }
}
val c1 = counter()
println (c1())
println (c1())
val c2 = counter()
println (c2())
println (c1())