def a = "a string"
def b = 'another'
Y a-t-il une différence? Ou tout comme javascript pour saisir '
et "
plus facile dans les chaînes?
Les guillemets simples sont une chaîne standard Java
Les guillemets doubles sont une chaîne modélisable, qui renverra soit une GString si elle est modélisée, soit une chaîne standard Java Java. 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 sa réponse vaut la peine d'être lu (en particulier la partie sur GStrings n'étant pas des chaînes environ 2/3 de la descente).
Ma compréhension est que la chaîne entre guillemets doubles peut contenir des références intégrées à des variables et autres expressions. Par exemple: "Hello $name"
, "Hello ${some-expression-here}"
. Dans ce cas, un GString
sera instancié au lieu d'un String
normal. D'un autre côté, les chaînes entre guillemets simples ne prennent pas en charge cette syntaxe et entraînent toujours un String
simple. Plus sur le sujet ici:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings