object Main extends App {
val a = 4
val b = a + c
val c = 5
println(b) // => 4
}
が割り当てられたときと同じように、これは4 を出力します。とは値であるため、ある瞬間と次の瞬間であってはなりません。Scala では、それらはimmutableであるべきですよね?c
0
b
a
c
0
5
少なくとも何らかの警告を受け取るべきではありませんか? もちろん、上記の例では、それを見逃すにはばかである必要がありますが、より複雑なケースでは、どの順序で配置するかを判断するのが難しい場合があります.
もちろん、使用できることは承知していますが、実際には使用していないのに、正しい順序で配置したと思っlazy val b = ...
たらどうなるでしょうか。これについてまったく警告を受けていないのは危険ではありませんか?これで問題なく動く!? これはどのようにしてScala IDEとコンパイラの両方に渡されるのでしょうか? わざとですか?それとも直せないバグですか?:/
:)