tôi thấy khá thú vị những cách khác nhau để khai báo một biến trong Swift:Khai báo đúng biến trong Swift như thế nào?
// METHOD 1
var dogName: String = "Charlie"
// METHOD 2
var dogName: String {
return "Charlie"
}
// METHOD 3
let dogName = {
return "Charlie"
}
// METHOD 4
var dogName: String = {
return "Charlie"
}()
Rõ ràng là phương pháp 3 khai báo một let và chúng tôi biết sự khác biệt; nhưng tại sao Swift lại cho phép phương pháp 4?
Sự khác nhau giữa bốn phương pháp này là gì?
Tôi khá bối rối đặc biệt giữa phương pháp 2 và 4. Ngoài ra, tại sao phương pháp 3 mất dấu ngoặc cuối cùng so với phương pháp 4?
Bạn không hoàn toàn chính xác về phương pháp 4. Việc đóng cửa sẽ được thực thi lúc khởi tạo đối tượng, nơi mà thuộc tính được khai báo chứ không chỉ khi được truy cập. Do đó, nó giống như một giá trị thuộc tính mặc định được gán từ kết quả của việc đóng. Nhưng bạn nói đúng, sau đó bạn có thể thay thế nó bằng bất cứ thứ gì khác. –
@OlegDanu Bạn hoàn toàn đúng, tôi đã cập nhật câu trả lời cho phù hợp. Cảm ơn! – Thomas
Tính chất được tính toán không phải lúc nào cũng chỉ đọc, BTW. Bạn có thể định nghĩa 'get' và' set' trên các thuộc tính được tính toán để làm cho chúng đọc-ghi. Tuy nhiên, khi được khai báo như đã trình bày ở trên, chúng ngầm chỉ có một getter, điều này có hiệu quả làm cho chúng chỉ đọc. Xem https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html#//apple_ref/doc/uid/TP40014097-CH14-ID259 –