5

以下のメソッドがエラーメッセージなしでコンパイルされる理由を誰でも説明できますか? デッドコードの警告かそのようなものを期待していました。コンパイルする理由はありますか?

def somethingAfterReturn(): Int = {
   println("That is ok..");
   return 1
   println("WTF is going on here?");
   3
}
4

3 に答える 3

9

まず、これを試してください:

$ 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 は到達不能なコードを無視します。

于 2012-10-21T17:42:48.230 に答える
1

構文的に有効であるため、コンパイラはこれを許可します。

于 2012-10-21T17:35:04.497 に答える
0

コンパイラは、リターン後のコードが実行されないことを認識しているため、無視します...だから私は思います

于 2012-10-21T17:36:21.457 に答える