def a = "a string"
def b = 'another'
Gibt es einen Unterschied? Oder einfach wie Javascript, um Eingaben zu machen '
und das Stringen zu "
vereinfachen?
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 FallGString
wird a anstelle eines regulären instanziiertString
. Zeichenfolgen in einfachen Anführungszeichen unterstützen diese Syntax hingegen nicht und führen immer zu einer EbeneString
. Mehr zum Thema hier:http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings
quelle