Groovy scripts genera un error:
def a = "test"
+ "test"
+ "test"
Error:
No signature of method: java.lang.String.positive() is
applicable for argument types: () values: []
Si bien este script funciona bien:
def a = new String(
"test"
+ "test"
+ "test"
)
¿Por qué?
def a = b + + "/" + c
. En este caso, los dos símbolos + son obviamente el problema.Respuestas:
Como groovy no tiene marcador EOL (como
;
), se confunde si coloca el operador en la siguiente líneaEsto funcionaría en su lugar:
ya que el analizador Groovy sabe esperar algo en la siguiente línea
Groovy ve tu original
def
como tres declaraciones separadas. Los primeros cesionariostest
aa
, los dos segundos tratan de hacer"test"
positivo (y aquí es donde se produce un error)Con el
new String
método del constructor, el analizador Groovy todavía está en el constructor (ya que la llave aún no se ha cerrado), por lo que lógicamente puede unir las tres líneas en una sola declaración.Para verdaderas cadenas de varias líneas, también puede usar la comilla triple:
Creará una cadena con prueba en tres líneas
Además, puede hacerlo más ordenado:
el
stripMargin
método recortará la izquierda (hasta e incluyendo el|
carácter) de cada líneafuente
stripMargin()
.|
caracteres en las líneas adicionales"""
cadenasstripIndent()
funcione.Puede decirle a Groovy que la declaración debe evaluarse más allá de la línea que termina agregando un par de paréntesis
( ... )
Una segunda opción es usar una barra invertida
\
, al final de cada línea:FWIW, esto es idéntico a cómo funcionan las declaraciones de múltiples líneas de Python.
fuente
Similar a
stripMargin()
, también puede usar stripIndent () comoPorque
también necesita sangrar la primera "prueba" y no ponerla directamente después de la inicial
"""
(esto\
asegura que la cadena de varias líneas no comience con una nueva línea).fuente