lazy キーワードにて遅延初期化を簡単に実現できます。
以下の例の場合、
class Emp(id:Int) { def getId = id val str : String = {println("init"); "lazy?"} } object Example030 extends Application { val t = new Emp(10) println(t.getId) }
実行結果は、
init 10
lazyを付けてみると必要時にのみ初期化されます。
class Emp(id:Int) { def getId = id lazy val str : String = {println("init"); "lazy?"} } object Example030 extends Application { val t = new Emp(10) println(t.getId) }
実行結果は以下のようになり、str の初期化が行われていないことが分かります。
10