def a = "a string"
def b = 'another'
有什麼區別嗎?或者就像javascript讓我們在字符串中輸入'
和"
更容易?groovy中的單引號或雙引號內的字符串有什麼區別?
def a = "a string"
def b = 'another'
有什麼區別嗎?或者就像javascript讓我們在字符串中輸入'
和"
更容易?groovy中的單引號或雙引號內的字符串有什麼區別?
單引號是一個標準的java字符串
雙引號是一個模板化的字符串,要麼返回一個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"
此外,link given by julkiewicz in their answer是值得一讀(尤指關於GString的部分不是。 。幸福字符串有關的一路下跌2/3
我的理解是,雙引號字符串可能包含嵌入引用變量和其他表現形式,例如:。"Hello $name"
,"Hello ${some-expression-here}"
在這種情況下GString
將被實例化,而不是常規String
。另一方面,單引號的字符串不支持這種語法,並且總是導致一個普通的String
。更多關於該主題在這裏:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings
關於GString的不是串好一點。即使它們包含相同的字符,但在GString和String之間的等於比較失敗時,這會變得有問題。這是你需要學習的東西,尤其是在引用地圖中的String/GString鍵時。 – Steven
完美的解釋,非常感謝。 –