2011-07-20 32 views

Trả lời

75

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

+3

Đ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

+0

Giải thích hoàn hảo, cảm ơn rất nhiều. –

11

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

Các vấn đề liên quan