Scalaで遅延評価されているかどうか確かめる
Scalaでは中括弧を使って次のようなプログラムを記述することができます。
object Main extends App{ val x = println("hoge"); }
中括弧{}の中は即座に評価されるので、次のような標準出力が得られます。
hoge
lazyキーワードを付け足すと次のようになります。
object Main extends App{ lazy val x = println("hoge"); }
このプログラムにおいて変数xは永遠に評価されないため、何も標準出力されません。
強制的にxを評価するようにプログラムを書くと"hoge"と表示されるようになります。
object Main extends App{ lazy val x = println("hoge") x }
これで遅延評価されていることが確認できました。