Les scripts Groovy soulèvent une erreur:
def a = "test"
+ "test"
+ "test"
Erreur:
No signature of method: java.lang.String.positive() is
applicable for argument types: () values: []
Bien que ce script fonctionne correctement:
def a = new String(
"test"
+ "test"
+ "test"
)
Pourquoi?
def a = b + + "/" + c
. Dans ce cas, les deux symboles + sont évidemment le problème.Réponses:
Comme groovy n'a pas de marqueur EOL (tel que
;
), il devient confus si vous mettez l'opérateur sur la ligne suivanteCela fonctionnerait à la place:
comme l'analyseur Groovy sait s'attendre à quelque chose sur la ligne suivante
Groovy considère votre original
def
comme trois déclarations distinctes. Le premier assignetest
àa
, les deux seconds essaient de rendre"test"
positif (et c'est là que ça échoue)Avec la
new String
méthode constructeur, l'analyseur Groovy est toujours dans le constructeur (car l'accolade n'est pas encore fermée), il peut donc logiquement joindre les trois lignes en une seule instructionPour les vraies chaînes multi-lignes, vous pouvez également utiliser le guillemet triple:
Créera une chaîne avec test sur trois lignes
En outre, vous pouvez le rendre plus net en:
la
stripMargin
méthode coupera la gauche (jusqu'à et y compris le caractère|
) de chaque lignela source
stripMargin()
.|
caractères sur les lignes supplémentaires"""
chaînesstripIndent()
fonctionner.Similaire à
stripMargin()
, vous pouvez également utiliser stripIndent () commeEn raison de
vous devez également indenter le premier "test" et ne pas le mettre directement après l'initial
"""
(cela\
garantit que la chaîne multiligne ne commence pas par une nouvelle ligne).la source
Vous pouvez dire à Groovy que l'instruction doit évaluer au-delà de la fin de la ligne en ajoutant une paire de parenthèses
( ... )
Une deuxième option consiste à utiliser une barre oblique inverse,,
\
à la fin de chaque ligne:FWIW, ceci est identique au fonctionnement des instructions multilignes Python.
la source