Trong khi chơi một chút với Swift tôi đã cố gắng để viết một tài sản khởi tạo chỉ đọc và lười biếng. Tôi nhanh chóng viết dòng mã đó chỉ để biết rằng nó không được phép.Tài sản chỉ đọc lười biếng trong swift
// no valid Swift code.
lazy let foo : Int = { return 42 }()
Bạn phải khai báo thuộc tính lười là var
. Cuốn sách nhanh chóng rõ ràng rằng chúng ta hãy có lười biếng không phải là có thể cho một lý do chính đáng:
“Bạn luôn phải khai báo thuộc tính lười biếng như là một biến (với từ khóa var), bởi vì giá trị ban đầu của nó có thể không được lấy ra cho đến khi khởi tạo sau khi hoàn thành. tính liên tục phải luôn luôn có một giá trị trước khởi hoàn tất, và do đó không thể được khai báo là lười biếng.”
Giả sử tôi muốn có một tài sản lười biếng readonly trong nhanh chóng. Whats cách tốt nhất để lưu trữ điều đó là gì?
Trình thiết lập riêng tư là đủ cho tôi. Tôi cũng thường sử dụng mẫu đó trong C#. – MBulli
Tôi nghĩ rằng điều này tương đương với '' 'private (set) lazy var foo = 42'''. Nếu bạn đánh dấu setter là private thì không có điểm nào trong việc khai báo getter chỉ với mục đích bỏ qua setter. –
Nó không phải là một getter, nó là một đóng cửa instantiation lười biếng, nhưng nó không phải là cần thiết, hoặc vì nó không chứa bất kỳ logic. Đó là lý do tại sao 'private (set) lazy var foo = 42' sẽ hoạt động giống như vậy. – Danchoys