Apa perbedaan string dalam tanda kutip tunggal atau ganda di groovy?


97
def a = "a string"
def b = 'another'

Apakah ada bedanya? Atau seperti javascript untuk memudahkan input 'dan "string?

Jawaban:


149

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.


6
Poin bagus tentang GString bukan String. Ini menjadi masalah dengan perbandingan yang sama yang gagal antara GString dan String meskipun keduanya berisi karakter yang sama. Ini adalah sesuatu yang baru saja Anda pelajari untuk diperhatikan, terutama saat mereferensikan kunci String / GString di peta.
Steven

19

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 GStringakan 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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.