2012-04-17 7 views
10

In Java kann ich dies tun:Groovy vs. Java-Syntax Diskrepanz

return a 
    && b 
    && c; 

In Groovy, es gibt einen Compiler-Fehler: unexpected token: &&. Es tritt auch auf, wenn ich das Stichwort return in Groovy weglasse. Wenn ich jedoch die Anweisung in Klammern umgebe, funktioniert es einwandfrei.

In all den Groovy-Ressourcen, die ich gelesen habe, wurde mir gesagt, dass ich in der Lage sein sollte, "straight Java" zu schreiben, wo immer ich will. Ist das ein Fehler? Wenn nicht, was ist der Grund für diese Designentscheidung?

Ich sah here, aber dieses Problem nicht aufgeführt aufgeführt. Ich verstehe, dass es einige Dinge gibt, die von Java vererbt werden können, aber das würde nicht wie eines dieser Dinge scheinen.

+0

+1 Es ist eine sehr interessante Frage, aber größtenteils von akademischem Interesse. In der Praxis wäre dies eine höchst ungewöhnliche Art, eine Return-Anweisung zu schreiben. –

+0

Wahr, zum größten Teil. Ich würde sagen, dass 'a',' b' und 'c' ausreichend gültig sind. –

Antwort

22

Das Problem ist, dass Groovy nicht explizit benötigt Line-Terminatoren - und return a sieht wie eine gültige Aussage für sich. Sie könnten verwenden:

return a && 
     b && 
     c; 

Oder eine Linie Fortsetzung verwenden:

return a \ 
    && b \ 
    && c; 

Es ist nicht wahr, dass alle Java gültig Groovy ist. Während die meisten Java-Syntax abgedeckt ist, wird gelegentlich eine Funktion von Groovy Auswirkungen auf gültiges Java haben.

+0

Interessant, danke. –

8

Groovy scheint nicht Semikolons zu verlangen, so dass ich denke, dass Ihr Code interpretiert werden wird wie:

return a; 
    && b; 
    && c; 

Von the documentation:

Groovy uses a similar syntax to Java although in Groovy semicolons are optional.

This saves a little typing but also makes code look much cleaner (surprisingly so for such a minor change). So normally if one statement is on each line you can ommit semicolons altogether - though its no problem to use them if you want to. If you want to put multiple statements on a line use a semicolon to separate the statements.

1

können Sie fast alle Java in groovy tun, außer Sie betrachten das folgende.

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

, wenn Sie gerade Java tun wollen, dann können Sie es in einer * .java Klasse tun und es in den src Ordner.

+0

Ich habe diese Seite gesehen, und mein Problem wird dort nicht angesprochen. –

+2

es tanzt um es herum Dinge zu beachten Semikolons sind optional. Verwenden Sie sie, wenn Sie möchten (obwohl Sie sie verwenden müssen, um mehrere Anweisungen in einer Zeile zu setzen). –

+0

Ja, ich weiß bereits, dass Semikolons optional sind ... das ist nicht hilfreich. Und ein Semikolon hier zu lösen, löst das Problem nicht einmal. –

Verwandte Themen