Respuestas:
Como groovy no tiene marcador EOL (como ;
), se confunde si coloca el operador en la siguiente línea
Esto funcionaría en su lugar:
def a = "test" +
"test" +
"test"
ya que el analizador Groovy sabe esperar algo en la siguiente línea
Groovy ve tu original def
como tres declaraciones separadas. Los primeros cesionarios test
a a
, 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:
def a = """test
test
test"""
Creará una cadena con prueba en tres líneas
Además, puede hacerlo más ordenado:
def a = """test
|test
|test""".stripMargin()
el stripMargin
método recortará la izquierda (hasta e incluyendo el |
carácter) de cada línea
stripMargin()
.
|
caracteres en las líneas adicionales
"""
cadenas
stripIndent()
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 ( ... )
def a = ("test"
+ "test"
+ "test")
Una segunda opción es usar una barra invertida \
, al final de cada línea:
def a = "test" \
+ "test" \
+ "test"
FWIW, esto es idéntico a cómo funcionan las declaraciones de múltiples líneas de Python.
Similar a stripMargin()
, también puede usar stripIndent () como
def a = """\
test
test
test""".stripIndent()
Porque
La línea con el menor número de espacios iniciales determina el número que se eliminará.
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).
def a = b + + "/" + c
. En este caso, los dos símbolos + son obviamente el problema.