Este artículo fue analizado por expertos así se garantiza la exactitud de nuestro post.
Solución:
Las comillas simples son una cadena java estándar
Las comillas dobles son una cadena con plantilla, que devolverá una GString si tiene una plantilla, o una cadena Java estándar. Por ejemplo:
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 intenta crear plantillas con cadenas entre comillas simples, no hace nada, por lo que:
println 'hi $a' // prints "hi $a"
Además, vale la pena leer el enlace proporcionado por julkiewicz en su respuesta (especialmente la parte sobre GStrings que no son cadenas aproximadamente 2/3 del camino hacia abajo).
Tengo entendido que entre comillas dobles string puede contener referencias incrustadas a variables y otras expresiones. Por ejemplo: "Hello $name"
, "Hello $some-expression-here"
. En este caso un GString
será instanciado en lugar de un regular String
. Por otro lado, las cadenas entre comillas simples no admiten esta sintaxis y siempre dan como resultado una simple String
. Más sobre el tema aquí:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings