scalaスクリプトでおかしな挙動?
たとえば、
object Foo {
val ZOO = "xxxx"
}
というクラスを作ってコンパイルします。これをスクリプトの中で使います。
println(Foo.ZOO)
これはOK。次に、
object Foo {
val ZOO = "xxxx"
val ZOO_ADDED = "ZZZZZ"
}
と、ZOO_ADDEDを増やします。そして、これをスクリプト中で使います。すると、
script.scala:2: error: value ZOO_ADDED is not a member of object Foo
println(Foo.ZOO_ADDED)
^
one error found
と、エラーになってしまいます。同じことをREPLでやるとこちらはエラーになりません。すごく不思議なんですが、scalaのテンポラリディレクトリ(/tmp/scala-devel)を一度削除するとスクリプトも動くようになります。ちょっと気持ちの悪い挙動でした。