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 def
come tre affermazioni separate. Il primo assegna test
a a
, i secondi due cercano di rendere "test"
positivo (ed è qui che fallisce)
Con il new String
metodo 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 stripMargin
metodo 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.