Antworten:
Einfache Anführungszeichen sind ein Standard-Java-String
Doppelte Anführungszeichen sind ein vorlagenfähiger String, der entweder einen GString zurückgibt, wenn er als Vorlage verwendet wird, oder ein Standard-Java-String. Beispielsweise:
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
Wenn Sie versuchen, Vorlagen mit einfachen Anführungszeichen zu erstellen, geschieht nichts, also:
println 'hi $a' // prints "hi $a"
Auch der Link, den Julkiewicz in seiner Antwort gegeben hat, ist lesenswert (insbesondere der Teil, in dem GStrings keine Strings sind, etwa 2/3 des Weges nach unten.
Nach meinem Verständnis kann eine Zeichenfolge in doppelten Anführungszeichen eingebettete Verweise auf Variablen und andere Ausdrücke enthalten. Zum Beispiel: "Hello $name"
, "Hello ${some-expression-here}"
. In diesem Fall GString
wird a anstelle eines regulären instanziiert String
. Zeichenfolgen in einfachen Anführungszeichen unterstützen diese Syntax hingegen nicht und führen immer zu einer Ebene String
. Mehr zum Thema hier:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings