def a = "a string"
def b = 'another'
มีความแตกต่างกันหรือไม่? หรือเหมือนกับ javascript เพื่อให้ป้อนข้อมูล'
และ"
ง่ายขึ้นในสตริง?
def a = "a string"
def b = 'another'
มีความแตกต่างกันหรือไม่? หรือเหมือนกับ javascript เพื่อให้ป้อนข้อมูล'
และ"
ง่ายขึ้นในสตริง?
คำตอบ:
เครื่องหมายคำพูดเดี่ยวเป็นสตริงจาวามาตรฐาน
เครื่องหมายคำพูดคู่เป็นสตริงที่สามารถปรับเปลี่ยนได้ซึ่งจะส่งคืน GString หากเป็นเทมเพลตหรือไม่ก็เป็นสตริง Java มาตรฐาน ตัวอย่างเช่น:
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 ไม่ใช่ Strings ประมาณ 2/3 ของทางลง
ความเข้าใจของฉันคือสตริงที่ยกมาสองครั้งอาจมีการอ้างอิงแบบฝังไปยังตัวแปรและนิพจน์อื่น ๆ ตัวอย่างเช่น: "Hello $name"
, "Hello ${some-expression-here}"
. ในกรณีนี้GString
จะได้รับการ instantiated String
แทนที่จะเป็นปกติ ในทางกลับกันสตริงที่ยกมาเดี่ยวไม่รองรับไวยากรณ์นี้และส่งผลให้เป็นแบบธรรมดาString
เสมอ เพิ่มเติมเกี่ยวกับหัวข้อที่นี่:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings