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

In Swift, is there a better way to initialize a "get" only variable?

假设我有一个 class、MyClass,它可以处于有效或无效状态。所以我用一个叫做 isValid 的布尔值来跟踪这个。我希望这个值初始化为 false,直到 class 的 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
  }

}

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

只需将您的 setter 设为私人即可。参见 Access Control

class MyClass {

    private(set) var isValid = false

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

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