以下のメソッドがエラーメッセージなしでコンパイルされる理由を誰でも説明できますか? デッドコードの警告かそのようなものを期待していました。コンパイルする理由はありますか?
def somethingAfterReturn(): Int = {
println("That is ok..");
return 1
println("WTF is going on here?");
3
}
まず、これを試してください:
$ scala -e 'def somethingAfterReturn(): Int = { println("That is ok.."); return 1; println("WTF is going on here?"); 3 }'
エラーはありませんよね?
次に、これを試してください:
$ scala -Ywarn-dead-code -e 'def somethingAfterReturn(): Int = { println("That is ok.."); return 1; println("WTF is going on here?"); 3 }'
デフォルトでは、Scala は到達不能なコードを無視します。
構文的に有効であるため、コンパイラはこれを許可します。
コンパイラは、リターン後のコードが実行されないことを認識しているため、無視します...だから私は思います