13

Javaではこれを行うことができます:

return a
    && b
    && c;

Groovyでは、コンパイルエラーを返しますunexpected token: &&returnGroovyでキーワードを省略した場合にも発生します。ただし、ステートメントを括弧で囲むと、正常に機能します。

私が読んだすべてのGroovyリソースで、「ストレートJava」をどこにでも書くことができるはずだと言われました。これはバグですか?そうでない場合、この設計上の決定の理由は何ですか?

ここを調べましたが、この問題がリストされていませんでした。Javaから継承できないものもあると思いますが、そうは思えません。

4

3 に答える 3

25

問題は、Groovyが明示的なラインターミネータを必要とせずreturn a、それ自体が有効なステートメントのように見えることです。あなたが使用することができます:

return a &&
       b &&
       c;

または、行継続を使用します。

return a \
    && b \
    && c;

すべてのJavaが有効なGroovyであるとは限りません。ほとんどのJava構文がカバーされていますが、Groovyの機能が有効なJavaに影響を与える場合があります。

于 2012-04-17T19:48:57.897 に答える
9

Groovyはセミコロンを必要としないようです。そのため、コードは次のように解釈されていると思います。

return a;
    && b;
    && c;

ドキュメントから:

GroovyではJavaと同様の構文を使用しますが、Groovyではセミコロンはオプションです。

これにより、入力が少し節約されますが、コードの見た目もすっきりします(驚くべきことに、このような小さな変更の場合はそうです)。したがって、通常、各行に1つのステートメントがある場合は、セミコロンを完全に省略できます。ただし、必要に応じてセミコロンを使用しても問題ありません。1行に複数のステートメントを配置する場合は、セミコロンを使用してステートメントを区切ります。

于 2012-04-17T19:48:53.137 に答える
2

以下を見る以外は、groovyでほとんどすべてのJavaを実行できます。

http://groovy.codehaus.org/Differences+from+Java

ストレートJavaを実行する場合は、*。javaクラスで実行し、srcフォルダーにドロップできます。

于 2012-04-17T19:57:33.503 に答える