जवाबों:
एकल उद्धरण एक मानक जावा स्ट्रिंग हैं
डबल कोट्स एक टेम्परटेबल स्ट्रिंग हैं, जो या तो GString को लौटा देगा, यदि यह टेम्प्लेटेड है, या एक मानक जावा स्ट्रिंग। उदाहरण के लिए:
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 द्वारा दिया गया लिंक पढ़ने के लायक है (जासूसी) जिस तरह से नीचे की ओर 2/3 स्ट्रिंग्स नहीं होने के बारे में है।
मेरी समझ यह है कि डबल-उद्धृत स्ट्रिंग में चर और अन्य अभिव्यक्तियों के एम्बेडेड सन्दर्भ हो सकते हैं। उदाहरण के लिए: "Hello $name"
, "Hello ${some-expression-here}"
। इस मामले GString
में एक नियमित के बजाय एक त्वरित किया जाएगा String
। दूसरी ओर एकल-उद्धृत स्ट्रिंग्स इस सिंटैक्स का समर्थन नहीं करते हैं और हमेशा एक सादे परिणाम देते हैं String
। विषय पर अधिक यहाँ:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings