Quelle est la différence des chaînes entre guillemets simples ou doubles dans groovy?
def a = "a string"
def b = 'another'
Y a-t-il une différence? Ou tout comme javascript pour entrer '
et "
plus facilement dans les chaînes?
2 réponses
Les guillemets simples sont une chaîne java standard
Les guillemets doubles sont une chaîne modulable, qui retournera soit une chaîne GString si elle est modelée, soit une chaîne Java standard. Par exemple:
println 'hi'.class.name // prints java.lang.String
println "hi".class.name // prints java.lang.String
def a = 'Freewind'
println "hi $a" // prints "hi Freewind"
println "hi $a".class.name // prints org.codehaus.groovy.runtime.GStringImpl
Si vous essayez de créer des modèles avec des chaînes entre guillemets simples, cela ne fait rien, donc:
println 'hi $a' // prints "hi $a"
En outre, le lien donné par julkiewicz dans leur réponse vaut la peine d'être lu (esp. la partie sur GStrings n'étant pas des chaînes à environ 2/3 du chemin vers le bas.
Ma compréhension est que la chaîne entre guillemets doubles peut contenir des références intégrées à des variables et à d'autres expressions. Par exemple: "Hello $name"
, "Hello ${some-expression-here}"
. Dans ce cas, un GString
sera instancié au lieu de régulier String
. D'un autre côté, les chaînes entre guillemets simples ne supportent pas cette syntaxe et aboutissent toujours à un String
simple. Plus sur le sujet ici:
Http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings