def a = "a string"
def b = 'another'
Có sự khác biệt nào không? Hay chỉ như javascript để nhập liệu '
và "
dễ dàng hơn trong chuỗi?
Câu trả lời:
Dấu ngoặc kép là một chuỗi java tiêu chuẩn
Dấu ngoặc kép là một Chuỗi tạo mẫu, sẽ trả về một GString nếu nó được tạo mẫu hoặc nếu không thì là một Chuỗi Java tiêu chuẩn. Ví dụ:
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
Nếu bạn thử tạo khuôn mẫu với các chuỗi được trích dẫn đơn lẻ, nó không làm được gì, vì vậy:
println 'hi $a' // prints "hi $a"
Ngoài ra, liên kết do julkiewicz đưa ra trong câu trả lời của họ rất đáng đọc (đặc biệt là phần GStrings không phải là Strings khoảng 2/3 chặng đường.
Sự hiểu biết của tôi là chuỗi được trích dẫn kép có thể chứa các tham chiếu nhúng đến các biến và các biểu thức khác. Ví dụ: "Hello $name"
, "Hello ${some-expression-here}"
. Trong trường hợp này, a GString
sẽ được khởi tạo thay vì thường String
. Mặt khác, các chuỗi được trích dẫn đơn không hỗ trợ cú pháp này và luôn dẫn đến kết quả đơn giản String
. Thêm về chủ đề ở đây:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings