Respostas:
Como groovy não tem marcador EOL (como ;
), ele fica confuso se você colocar o operador na linha seguinte
Isso funcionaria em vez disso:
def a = "test" +
"test" +
"test"
como o analisador Groovy sabe esperar algo na linha seguinte
O Groovy vê seu original def
como três instruções separadas. O primeiro atribui test
a a
, os dois segundos tentam tornar "test"
positivo (e é aqui que falha)
Com o new String
método do construtor, o analisador Groovy ainda está no construtor (já que a chave ainda não foi fechada), então ele pode unir logicamente as três linhas em uma única instrução
Para verdadeiras strings de várias linhas, você também pode usar aspas triplas:
def a = """test
test
test"""
Irá criar uma String com teste em três linhas
Além disso, você pode torná-lo mais organizado:
def a = """test
|test
|test""".stripMargin()
o stripMargin
método irá cortar a esquerda (até e incluindo o |
caractere) de cada linha
stripMargin()
.
|
caracteres nas linhas extras
"""
strings
stripIndent()
funcionar.
Você pode dizer ao Groovy que a instrução deve ser avaliada além da linha que termina adicionando um par de parênteses ( ... )
def a = ("test"
+ "test"
+ "test")
Uma segunda opção é usar uma barra invertida,, \
no final de cada linha:
def a = "test" \
+ "test" \
+ "test"
FWIW, isso é idêntico a como as instruções de várias linhas do Python funcionam.
Semelhante a stripMargin()
, você também pode usar stripIndent () como
def a = """\
test
test
test""".stripIndent()
Por causa de
A linha com o menor número de espaços à esquerda determina o número a ser removido.
você também precisa recuar o primeiro "teste" e não colocá-lo diretamente após o inicial """
(isso \
garante que a string de várias linhas não comece com uma nova linha).
def a = b + + "/" + c
. Neste caso, os dois símbolos + são obviamente o problema.