Tôi sợ không có cách truyền thống trong Swift, và một trong hai bằng các ngôn ngữ khác quá. (Cách truyền thống ở đây có nghĩa là bạn sử dụng từ khóa được hỗ trợ cho mục đích của bạn). Rất khó để bạn biết biến này đã được khởi tạo trước đó (không sử dụng một số biến trạng thái để kiểm tra).
Bạn có thể sử dụng mẫu thiết kế này: khai báo tất cả các thuộc tính là private
(vì vậy bạn không thể đặt các thuộc tính đó ở nơi khác trong mã của bạn). Và bạn sẽ khởi tạo tất cả các thuộc tính trong constructor
. Vì vậy, tất cả các thuộc tính sẽ được khởi tạo chỉ một.
Objective-C
và Swift 2
có quyền truy cập modifier như public
protected
private
.
lưu ý: Swift 1
không có công cụ sửa đổi truy cập.
Dưới đây là bản demo trong Swift 2
:
class ViewModel {
private var firstName : String;
private var lastName : String;
init (firstName: String, lastName: String) {
self.firstName = firstName
self.lastName = lastName
}
}
Dưới đây là bản demo trong Objective-C
:
@interface ViewModel : NSObject
{
@private
NSString *firstName;
@private
NSString *lastName;
}
- (id)initWithFirstName:(NSString *)_firstName
lastName:(NSString *)_lastName
@end
@implementation ViewModel
- (id)initWithFirstName:(NSString *)_firstName
lastName:(NSString *)_lastName
{
if(self = [super init])
{
firstName = _firstName;
lastName = _lastName;
}
return self;
}
@end
Hope trợ giúp này :)
Tôi thích cách tiếp cận này tốt hơn, theo cách tiếp cận của @Babul Prabhakar nếu ** myPrivateVar ** được đặt thành không có người đặt vẫn có thể viết. Cách tiếp cận này đảm bảo rằng sẽ không bao giờ xảy ra. +1 –
Cảm ơn bạn, tôi nghĩ đây là cách tiếp cận gọn gàng và ngắn nhất. – inforeqd