def a = "a string"
def b = 'another'
Herhangi bir fark var mı? Veya dizeleri 'girip "daha kolay hale getirmek için javascript gibi mi?
def a = "a string"
def b = 'another'
Herhangi bir fark var mı? Veya dizeleri 'girip "daha kolay hale getirmek için javascript gibi mi?
Yanıtlar:
Tek tırnaklar standart bir java dizesidir
Çift tırnaklar, şablon oluşturulmuşsa bir GString veya standart bir Java Dizesi döndüren şablonlu bir Dizedir. Örneğin:
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
Tek tırnaklı dizelerle şablon oluşturmayı denerseniz, hiçbir şey yapmaz, yani:
println 'hi $a' // prints "hi $a"
Ayrıca, julkiewicz'in yanıtlarında verdiği bağlantı okumaya değer (özellikle GStrings'in Dizelerin 2 / 3'ü kadar aşağıya doğru olmadığı kısmı.
Anladığım kadarıyla, çift tırnaklı dizge değişkenlere ve diğer ifadelere gömülü referanslar içerebilir. Örneğin: "Hello $name", "Hello ${some-expression-here}". Bu durumda GString, normal yerine a somutlaştırılacaktır String. Öte yandan, tek tırnaklı dizeler bu sözdizimini desteklemez ve her zaman bir düz ile sonuçlanır String. Konuyla ilgili daha fazla bilgi burada:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings