在Swift中,有没有更好的方法来初始化"get"唯一变量?

Tim*_*qua 5 accessor ios swift

假设我有一个类,MyClass它可以处于有效或无效状态.所以我用一个叫做的bool跟踪这个isValid.我想要初始化此值,false直到initialize调用类的函数.的initialize(和对应的reset功能)将直接能够改变的值isValid布尔.这是我到目前为止所建立的:

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
  }

}
Run Code Online (Sandbox Code Playgroud)

那么这是最好的方法吗,或者有什么方法可以删除第二个私有var并以某种方式只允许类函数修改只读公共面向变量?

Rob*_*ier 13

只需将您的二传手设为私人.请参阅访问控制.

class MyClass {

    private(set) var isValid = false

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

    func reset() {
        // reset stuff
        self.isValid = false
    }        
}
Run Code Online (Sandbox Code Playgroud)

  • 是的!我不知道该关键字,但这正是我正在寻找的,并且我不必再有重复的私有变量了。谢谢。 (2认同)