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?

58
demandé sur Freewind 2011-07-20 15:57:34

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.

95
répondu tim_yates 2017-05-23 10:31:04

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

13
répondu julkiewicz 2015-11-23 16:28:30