ここに2つのREPLセッションがあります(私の質問は異なりますが、この質問に触発されました):
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def ignore(it: String) = 42
ignore: (it: String)Int
scala> ignore(null.asInstanceOf[Nothing])
res0: Int = 42
と:
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.
scala> def ignore(it: String) = 42
ignore: (it: String)Int
scala> ignore(null.asInstanceOf[Nothing])
java.lang.NullPointerException
at .<init>(<console>:9)
at .<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at $print(<console>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
唯一の違いは、最初が Scala 2.9.2 で、2 番目が 2.10.0 であることです。
誰かがこの新しい動作につながる 2.10 の変更点を指摘できますか?
にキャストするNothing
のはばかげたことであり、答えは「これはすべて未定義の動作なので、やめてください」かもしれないことは知っていますが、アップグレーダーに潜在的に影響を与える可能性のある種類のように見えます。これを説明する変更の議論に出くわしたことを覚えていません.