def a = "a string"
def b = 'another'
違いはありますか?または、javascriptのように、文字列で'
と"
を簡単に入力できますか?
単一引用符は標準のJava String
二重引用符はテンプレート可能な文字列であり、テンプレート化されている場合はGStringを返し、そうでない場合は標準のJava String。たとえば:
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
単一引用符で囲まれた文字列を使用してテンプレート化しようとしても、何も実行されません。
println 'hi $a' // prints "hi $a"
また、 答えにjulkiewiczによって与えられたリンク は読む価値があります(特に、GStringsが文字列ではない部分は2/3ほど下にあります)。
私の理解では、二重引用符で囲まれた文字列には、変数や他の式への埋め込み参照が含まれる場合があります。例えば: "Hello $name"
、"Hello ${some-expression-here}"
。この場合、通常のGString
の代わりにString
がインスタンス化されます。一方、単一引用符で囲まれた文字列はこの構文をサポートせず、常にプレーンString
になります。ここでトピックの詳細:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings