def a = "a string"
def b = 'another'
Apakah ada bedanya? Atau seperti javascript untuk memudahkan input '
dan "
string?
Jawaban:
Tanda kutip tunggal adalah String java standar
Tanda kutip ganda adalah String yang dapat templatenya, yang akan mengembalikan GString jika diberi templat, atau String Java standar. Sebagai contoh:
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
Jika Anda mencoba membuat template dengan string yang dikutip tunggal, itu tidak melakukan apa-apa, jadi:
println 'hi $a' // prints "hi $a"
Juga, tautan yang diberikan oleh julkiewicz dalam jawaban mereka layak untuk dibaca (khususnya bagian tentang GStrings bukan Strings sekitar 2/3 dari jalan ke bawah.
Pemahaman saya adalah bahwa string yang dikutip ganda mungkin berisi referensi yang disematkan ke variabel dan ekspresi lainnya. Misalnya: "Hello $name"
, "Hello ${some-expression-here}"
. Dalam hal ini a GString
akan dipakai sebagai pengganti reguler String
. Di sisi lain, string yang dikutip tunggal tidak mendukung sintaks ini dan selalu menghasilkan teks biasa String
. Lebih lanjut tentang topik di sini:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings