2015-03-13 48 views
3

假设我有一个班级,MyClass,它可以处于有效状态或无效状态。所以我用一个名为isValid的布尔来跟踪这个。我希望此值初始化为false,直到调用该类的initialize函数。 initialize(和相应的reset函数)将直接能够更改isValid bool的值。这是我所成立至今:在Swift中,有没有更好的方法来初始化一个“get”变量?

class MyClass { 

    private var _isValid: Bool = false 
    var isValid: Bool { 
    get { return _isValid } 
    } 

// any required init functions 

    func initialize() { 
    // init stuff 
    _isValid = true 
    } 

    func reset() { 
    // reset stuff 
    _isValid = false 
    } 

} 

因此,这是做的最好的办法,或者是有什么办法可以删除第二个私人var和莫名其妙仅允许类函数来修改读只有面向公众的变量?

回答

9

只是让你的二传私人。见Access Control

class MyClass { 

    private(set) var isValid = false 

    func initialize() { 
     // init stuff 
     self.isValid = true 
    } 

    func reset() { 
     // reset stuff 
     self.isValid = false 
    }   
} 
+1

是的!我不知道那个关键字,但这正是我正在寻找的,我不必有一个重复的私有变量了。谢谢。 – 2015-03-13 18:16:01

相关问题