2011-07-20 17 views

Respuesta

75

Las comillas simples son una serie Java estándar

comillas dobles son una cadena templatable, que, o bien devolver un GString si es con plantilla, o bien un estándar de Java cadena. 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 trata de plantillas con cadenas entre comillas sencillas, que no hace nada, así que:

println 'hi $a'   // prints "hi $a" 

Además, el link given by julkiewicz in their answer vale la pena leer (especialmente la parte sobre gStrings no. . Cuerdas ser aproximadamente 2/3 del camino hacia abajo

+3

buen punto sobre el GString no ser de cadena. Esto se vuelve problemático con las comparaciones iguales que fallan entre GString y String a pesar de que contienen los mismos caracteres. Esto es algo que debe aprender a tener en cuenta, especialmente cuando se hace referencia a las claves String/GString en los mapas. – Steven

+0

Explicación perfecta, muchas gracias. –

11

Mi entendimiento es que cadena entre comillas dobles puede contener referencias a variables incrustado y otras expresiones Por ejemplo:.. "Hello $name", "Hello ${some-expression-here}" En este caso, un GString se creará una instancia en lugar de un String normal. Por otro lado, las cadenas de comillas simples no admiten esta sintaxis y siempre dan como resultado un String normal. Más sobre el tema aquí:

http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings

Cuestiones relacionadas