def a = "a string"
def b = 'another'
Có sự khác biệt nào không? Hoặc giống như javascript để nhập '
và "
dễ dàng hơn trong chuỗi?Sự khác biệt của các chuỗi trong dấu nháy đơn hoặc kép trong groovy là gì?
def a = "a string"
def b = 'another'
Có sự khác biệt nào không? Hoặc giống như javascript để nhập '
và "
dễ dàng hơn trong chuỗi?Sự khác biệt của các chuỗi trong dấu nháy đơn hoặc kép trong groovy là gì?
Dấu nháy đơn là một java chuỗi tiêu chuẩn
dấu ngoặc kép là một String templatable, mà một trong hai sẽ trả về một G-string nếu nó là templated, nếu không một tiêu chuẩn Java String. 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 cố gắng khuôn mẫu với chuỗi trích dẫn duy nhất, nó không làm bất cứ điều gì, vì vậy:
println 'hi $a' // prints "hi $a"
Ngoài ra, link given by julkiewicz in their answer rất đáng đọc (đặc biệt là phần về GStrings không. là chuỗi về 2/3 đường xuống
Sự hiểu biết của tôi là chuỗi kép được trích dẫn có thể chứa tham chiếu được nhúng vào 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 là GString
sẽ được khởi tạo thay vì thông thường String
. Mặt khác, các chuỗi được trích dẫn một lần không hỗ trợ cú pháp này và luôn dẫn đến một số đơn giản là String
. Thông tin thêm về chủ đề tại đây:
http://docs.groovy-lang.org/latest/html/documentation/index.html#all-strings
Điểm tốt về GString không phải là chuỗi. Điều này trở nên có vấn đề với bằng so sánh giữa GString và String mặc dù chúng chứa các ký tự giống nhau. Đây là một cái gì đó bạn chỉ cần tìm hiểu để tìm ra, đặc biệt là khi tham khảo các phím String/GString trong bản đồ. – Steven
Giải thích hoàn hảo, cảm ơn rất nhiều. –