def a = "a string"
def b = 'another'
Existe alguma diferença? Ou apenas como javascript para inserir '
e "
mais fácil em strings?
As aspas simples são uma string java padrão
As aspas duplas são uma String modelável, que retornará um GString se for modelada ou então uma String Java padrão. Por exemplo:
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 você tentar modelar com strings entre aspas simples, não fará nada, então:
println 'hi $a' // prints "hi $a"
Além disso, vale a pena ler o link fornecido por julkiewicz em sua resposta (especialmente a parte sobre GStrings não serem Strings cerca de 2/3 do caminho para baixo.
Meu entendimento é que a string entre aspas pode conter referências incorporadas a variáveis e outras expressões. Por exemplo:
"Hello $name"
,"Hello ${some-expression-here}"
. Nesse caso, umGString
será instanciado em vez de um regularString
. Por outro lado, strings entre aspas simples não suportam essa sintaxe e sempre resultam em um texto simplesString
. Mais sobre o assunto aqui:http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings
fonte