def a = "a string"
def b = 'another'
¿Hay alguna diferencia? ¿O simplemente como javascript para ingresar '
y "
más fácilmente en cadenas?
Respuestas:
Las comillas simples son una cadena java estándar
Las comillas dobles son una cadena que puede adaptarse a la 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, así 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 de aproximadamente 2/3 del camino hacia abajo.
Tengo entendido que la cadena entre comillas dobles puede contener referencias incrustadas a variables y otras expresiones. Por ejemplo: "Hello $name"
, "Hello ${some-expression-here}"
. En este caso GString
, se creará una instancia de un archivo String
. Por otro lado, las cadenas entre comillas simples no admiten esta sintaxis y siempre dan como resultado un archivo String
. Más sobre el tema aquí:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings