def a = "a string"
def b = 'another'
C'è qualche differenza? O semplicemente come JavaScript per inserire '
e "
semplificare le stringhe?
def a = "a string"
def b = 'another'
C'è qualche differenza? O semplicemente come JavaScript per inserire '
e "
semplificare le stringhe?
Risposte:
Le virgolette singole sono una stringa java standard
Le virgolette doppie sono una stringa modellabile, che restituirà una GString se è basata su modelli, oppure una stringa Java standard. Per esempio:
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
Se provi a creare modelli con stringhe tra virgolette singole, non fa nulla, quindi:
println 'hi $a' // prints "hi $a"
Inoltre, vale la pena leggere il collegamento fornito da julkiewicz nella loro risposta (specialmente la parte su GStrings che non sono stringhe a circa 2/3 della fine.
La mia comprensione è che le stringhe tra virgolette possono contenere riferimenti incorporati a variabili e altre espressioni. Ad esempio: "Hello $name"
, "Hello ${some-expression-here}"
. In questo caso GString
verrà istanziato un al posto di un normale String
. D'altra parte le stringhe con virgolette singole non supportano questa sintassi e risultano sempre semplici String
. Maggiori informazioni sull'argomento qui:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings