scala> lazy val x = { println("avaliou x"); "XXX" } x: java.lang.String = scala> lazy val y = { println("avaliou y"); "YYY" } y: java.lang.String = scala> if (true) x else y LAZY VALS
scala> lazy val x = { println("avaliou x"); "XXX" } x: java.lang.String = scala> lazy val y = { println("avaliou y"); "YYY" } y: java.lang.String = scala> if (true) x else y avaliou x res0: java.lang.String = XXX LAZY VALS
scala> lazy val x = { println("avaliou x"); "XXX" } x: java.lang.String = scala> lazy val y = { println("avaliou y"); "YYY" } y: java.lang.String = scala> if (true) x else y avaliou x res0: java.lang.String = XXX scala> if (true) x else y LAZY VALS
scala> lazy val x = { println("avaliou x"); "XXX" } x: java.lang.String = scala> lazy val y = { println("avaliou y"); "YYY" } y: java.lang.String = scala> if (true) x else y avaliou x res0: java.lang.String = XXX scala> if (true) x else y res1: java.lang.String = XXX LAZY VALS
1 val x = { throw new RuntimeException; 5 } 2 println("x + 3 =") 3 println(x+3) Exception in thread "main" java.lang.RuntimeException ! at Test$.main(Test.scala:1) ! at Test.main(Test.scala) EAGER
1 val x = { throw new RuntimeException; 5 } 2 println("x + 3 =") 3 println(x+3) Exception in thread "main" java.lang.RuntimeException ! at Test$.main(Test.scala:1) ! at Test.main(Test.scala) EAGER
1 lazy val x = { throw new RuntimeException; 5 } 2 println("x + 3 =") 3 println(x+3) x + 3 = Exception in thread "main" java.lang.RuntimeException ! at Test$.main(Test.scala:1) ! at Test$.main(Test.scala:3) ! at Test.main(Test.scala) LAZY
1 lazy val x = { throw new RuntimeException; 5 } 2 println("x + 3 =") 3 println(x+3) x + 3 = Exception in thread "main" java.lang.RuntimeException ! at Test$.main(Test.scala:1) ! at Test$.main(Test.scala:3) ! at Test.main(Test.scala) LAZY