Risposte:
Dato che groovy non ha un marcatore EOL (come ;) si confonde se metti l'operatore sulla riga seguente
Questo invece funzionerebbe:
def a = "test" +
"test" +
"test"
poiché il parser Groovy sa di aspettarsi qualcosa nella riga seguente
Groovy vede il tuo originale defcome tre affermazioni separate. Il primo assegna testa a, i secondi due cercano di rendere "test"positivo (ed è qui che fallisce)
Con il new Stringmetodo del costruttore, il parser Groovy è ancora nel costruttore (poiché la parentesi non si è ancora chiusa), quindi può unire logicamente le tre linee insieme in una singola istruzione
Per le vere stringhe multilinea, puoi anche utilizzare le virgolette triple:
def a = """test
test
test"""
Creerà una stringa con test su tre righe
Inoltre, puoi renderlo più ordinato:
def a = """test
|test
|test""".stripMargin()
il stripMarginmetodo taglierà la parte sinistra (fino al carattere incluso |) da ogni riga
stripMargin() .
|caratteri nelle righe extra
"""stringhe
stripIndent() funzionare.
Puoi dire a Groovy che l'istruzione deve valutare oltre la fine della riga aggiungendo una coppia di parentesi ( ... )
def a = ("test"
+ "test"
+ "test")
Una seconda opzione consiste nell'usare una barra rovesciata,, \alla fine di ogni riga:
def a = "test" \
+ "test" \
+ "test"
FWIW, questo è identico a come funzionano le istruzioni multilinea di Python.
Simile a stripMargin(), potresti anche usare stripIndent () come
def a = """\
test
test
test""".stripIndent()
Per colpa di
La riga con il minor numero di spazi iniziali determina il numero da rimuovere.
devi anche indentare il primo "test" e non metterlo subito dopo l'inital """(il che \assicura che la stringa multilinea non inizi con una nuova riga).
def a = b + + "/" + c. In questo caso i due simboli + sono ovviamente il problema.