2012-04-17 4 views
10

В Java я могу это сделать:Groovy по сравнению с Java синтаксиса несовпадения

return a 
    && b 
    && c; 

В Groovy, он возвращает ошибку компиляции: unexpected token: &&. Это также происходит, если я опускаю ключевое слово return в Groovy. Однако, если я заключу оператор в круглые скобки, он отлично работает.

Во всех ресурсах Groovy, которые я читал, мне сказали, что я должен писать «прямую Java» везде, где захочу. Это ошибка? Если нет, в чем причина этого дизайнерского решения?

Я посмотрел here, но не нашел эту проблему в списке. Я понимаю, что есть некоторые вещи, которые не может унаследовать от Java, но это не похоже на одну из этих вещей.

+0

+1 Это очень интересный вопрос, но в значительной степени академический интерес. На практике это было бы очень необычным способом написать оператор возврата –

+0

Правда, по большей части. Я бы сказал, что существует некоторая ценность для 'a',' b' и 'c' достаточно уродливых. –

ответ

22

Проблема заключается в том, что Groovy не требует явного line terminators - и return a выглядит как действительное заявление самостоятельно. Вы можете использовать:

return a && 
     b && 
     c; 

Или использовать линии продолжения:

return a \ 
    && b \ 
    && c; 

Это не правда, что все Java действует Groovy. Хотя большинство синтаксиса Java охвачены, иногда функция Groovy будет влиять на действительную Java.

+0

Интересно, спасибо. –

8

Groovy, кажется, не требует запятой, так что я думаю, что ваш код быть intepreted как:

return a; 
    && b; 
    && c; 

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

вы можете сделать почти все java в groovy, за исключением того, что вы смотрите на следующее.

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

, если вы хотите сделать прямой Java, то вы можете сделать это в * классе .java и поместите его в папку Src.

+0

Я видел эту страницу, и моя проблема там не рассматривается. –

+2

это вид танцев вокруг него Вещи, которые нужно знать Точки с запятой не являются обязательными. Используйте их, если хотите (хотя вы должны использовать их для размещения нескольких операторов в одной строке). –

+0

Да, я уже знаю, что точки с запятой являются необязательными ... это не полезно. И использование полуколоны здесь даже не решает проблему. –

Смежные вопросы