Antworten:
Da groovy keinen EOL-Marker (wie z. B. ;
) hat, wird es verwirrt, wenn Sie den Operator in die folgende Zeile setzen
Dies würde stattdessen funktionieren:
def a = "test" +
"test" +
"test"
wie der Groovy-Parser in der folgenden Zeile zu erwarten weiß
Groovy sieht Ihr Original def
als drei separate Aussagen. Der erste weist test
zu a
, die zweiten beiden versuchen, "test"
positiv zu machen (und hier schlägt es fehl)
Bei der new String
Konstruktormethode befindet sich der Groovy-Parser noch im Konstruktor (da die Klammer noch nicht geschlossen wurde), sodass die drei Zeilen logisch zu einer einzigen Anweisung zusammengefügt werden können
Für echte mehrzeilige Zeichenfolgen können Sie auch das dreifache Anführungszeichen verwenden:
def a = """test
test
test"""
Erstellt einen String mit Test in drei Zeilen
Sie können es auch ordentlicher machen, indem Sie:
def a = """test
|test
|test""".stripMargin()
Die stripMargin
Methode schneidet die linke |
Zeile (bis einschließlich des Zeichens) von jeder Zeile ab
stripMargin()
.
|
Zeichen in den zusätzlichen Zeilen
"""
Zeichenfolgen verwenden
stripIndent()
funktioniert.
Sie können Groovy mitteilen, dass die Anweisung über das Zeilenende hinaus ausgewertet werden soll, indem Sie ein Paar Klammern hinzufügen ( ... )
def a = ("test"
+ "test"
+ "test")
Eine zweite Möglichkeit besteht darin \
, am Ende jeder Zeile einen Backslash zu verwenden :
def a = "test" \
+ "test" \
+ "test"
FWIW, dies ist identisch mit der Funktionsweise von mehrzeiligen Python-Anweisungen.
Ähnlich wie stripMargin()
könnten Sie auch stripIndent () like verwenden
def a = """\
test
test
test""".stripIndent()
Wegen
Die Zeile mit der geringsten Anzahl führender Leerzeichen bestimmt die zu entfernende Anzahl.
Sie müssen auch den ersten "Test" einrücken und nicht direkt nach dem Anfang einfügen """
(dies \
stellt sicher, dass die mehrzeilige Zeichenfolge nicht mit einer neuen Zeile beginnt).
def a = b + + "/" + c
. In diesem Fall sind die beiden + Symbole offensichtlich das Problem.