web-dev-qa-db-fra.com

Quelle est la différence de 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 saisir ' et " plus facile dans les chaînes?

77
Freewind

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).

122
tim_yates

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

15
julkiewicz