Sử dụng countOfAttendees
và countOfPaidAttendees()
.
Biến được tính là biến trả về giá trị được tính mỗi lần truy cập. Đó là, nó không lưu trữ một giá trị. Trong nội bộ nó được thực hiện như là một chức năng.
Sự khác biệt với một chức năng là gì?
- Về mặt ngữ nghĩa, một biến là trạng thái, một hàm là một hành động.
- Một chức năng điều chỉnh truy cập vào lưu trữ riêng. Một biến được tính toán có thể làm tương tự theo cách nhỏ gọn hơn. Ví dụ .
- Một biến được tính toán có thể được sử dụng với KVO, được chuyển dưới dạng #keypath và có các phương tiện để quan sát: will Set, did Set.
Bạn nên sử dụng một biến khi
- nó không ném
- nó trả về một tài sản đơn giản
- nó không có tác dụng phụ hay động từ trong tên của nó
- đó là O (1), nghĩa là, nó không phải chịu một chi phí đáng kể. Trong ví dụ của bạn, nó sẽ là O (n).
- nó là bình thường Nhiều lệnh giống nhau trả về cùng một giá trị hoặc đặt đối tượng về cùng một trạng thái.
Những lý do không liên quan để thích một biến hơn một hàm
- Một biến được tính toán giúp bạn không phải gõ (). Tuy nhiên, sự rõ ràng quan trọng hơn sự ngắn gọn, vì vậy đây là một lập luận yếu.
- Một biến chỉ đọc có thể được ghi đè là đọc / ghi. Một hàm chỉ ra nó luôn luôn chỉ đọc. Tuy nhiên, Apple sử dụng các thuộc tính cho các biến chỉ đọc như mảng.count. Khi nghi ngờ tìm kiếm sự nhất quán với nền tảng.
Tài nguyên
Từ WWDC 2014 - 204 Có gì mới trong Ca cao > 24:40 Khi nào nên sử dụng @property
Sử dụng thuộc tính cho bất cứ điều gì liên quan đến giá trị hoặc trạng thái của một đối tượng hoặc mối quan hệ của nó với các đối tượng khác. Ứng cử viên xấu:
- Các phương thức làm việc: tải, phân tích cú pháp, chuyển đổi, tầm. Họ có động từ trong tên của nó.
- Trình tạo: init, copy, liệt kê, lỗi. Những phương pháp này không phải là idempotent.
- Các phương thức thay đổi trạng thái: nextObject.
Từ Phong cách Swift của Erica Sadun > Thuộc tính được tính toán so với Phương thức
Một thuộc tính thể hiện chất lượng vốn có của một thể hiện, trong khi một phương thức thực hiện một hành động.
- Các phương thức có tham số; tài sản không. Thích phương pháp cho bất kỳ cuộc gọi với tác dụng phụ. Nếu một phương thức làm một cái gì đó (ví dụ, nó tải, phân tích cú pháp, bật hoặc in) hoặc có một tên động từ, thì nó không phải là một thuộc tính.
- Thích các thuộc tính cho các giá trị đơn giản mà bạn có thể nhận và / hoặc đặt.
- Các thuộc tính phải thể hiện chất lượng nội tại ngữ nghĩa của một thể hiện loại.
- Thuộc tính cho phép bạn thêm người quan sát thông qua will Set và did Set. Không giống như các thuộc tính được lưu trữ, các thuộc tính loại được lưu trữ phải luôn được cung cấp một giá trị mặc định.
Từ quy ước mã hóa Kotlin> chức năng so với thuộc tính . Xem câu trả lời của Daniel ở trên .
Các tài nguyên khác không có thông tin liên quan: