2012-04-17 17 views
10

En Java que pueda hacer esto:maravilloso vs discrepancia sintaxis de Java

return a 
    && b 
    && c; 

En Groovy, devuelve un error de compilación: unexpected token: &&. También ocurre si omito la palabra clave return en Groovy. Sin embargo, si envuelvo la declaración entre paréntesis, funciona bien.

En todos los recursos de Groovy que he leído, me han dicho que debería poder escribir "Java directa" donde quiera. ¿Es esto un error? Si no, ¿cuál es el motivo de esta decisión de diseño?

Miré here, pero no encontré este problema. Entiendo que hay algunas cosas que no se pueden heredar de Java, pero esto no parece ser una de esas cosas.

+0

+1 Es una pregunta muy interesante, pero en gran parte de interés académico. En la práctica, esta sería una forma muy inusual de escribir una declaración de devolución –

+0

Verdadero, en su mayor parte. Diría que hay algo de validez para 'a',' b', y 'c' suficientemente feo. –

Respuesta

22

El problema es que no requiere maravilloso explícita terminadores de línea - y return a parece una declaración válida por sí misma. Se podría utilizar:

return a && 
     b && 
     c; 

O utilizar una continuación de línea:

return a \ 
    && b \ 
    && c; 

Es no cierto que todos Java es maravilloso válida. Si bien la mayoría de la sintaxis de Java está cubierta, ocasionalmente una característica de Groovy tendrá un impacto en Java válido.

+0

Interesante, gracias. –

8

maravilloso no parece requerir punto y coma, así que creo que el código está siendo intepreted como:

return a; 
    && b; 
    && c; 

De 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

puedes hacer casi todos los movimientos de java en groovy, excepto que mira lo siguiente.

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

si usted quiere hacer java recta a continuación, puede hacerlo en una clase .java * y colocarlo en la carpeta src.

+0

He visto esta página y mi problema no ha sido abordado allí. –

+2

tipo de baile a su alrededor Lo que debe tener en cuenta Los puntos y coma son opcionales. Úselos si lo desea (aunque debe usarlos para poner varias declaraciones en una línea). –

+0

Sí, ya sé que los puntos y comas son opcionales ... esto no es útil. Y usar un punto y coma aquí ni siquiera resuelve el problema. –