def a = "a string"
def b = 'another'
Y a-t-il une différence? Ou juste comme javascript pour entrer '
et "
plus facilement dans les chaînes?
Réponses:
Les guillemets simples sont une chaîne Java standard
Les guillemets doubles sont une chaîne modélisable, qui retournera soit une GString si elle est modélisé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"
De plus, le lien donné par julkiewicz dans leur réponse vaut la peine d'être lu (en particulier la partie sur les GStrings n'étant pas des chaînes aux 2/3 environ.
Je crois comprendre que la chaîne entre guillemets peut contenir des références incorporées à des variables et à d'autres expressions. Par exemple: "Hello $name"
, "Hello ${some-expression-here}"
. Dans ce cas, un GString
sera instancié au lieu d'un régulier String
. D'un autre côté, les chaînes entre guillemets simples ne prennent pas en charge cette syntaxe et donnent toujours un simple String
. Plus d'informations sur le sujet ici:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings