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



假设我有一个类,MyClass ,它可以处于有效或无效状态。所以我用一个叫做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
  }
}

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

只需将您的二传手设为私有即可。请参阅访问控制。

class MyClass {
    private(set) var isValid = false
    func initialize() {
        // init stuff
        self.isValid = true
    }
    func reset() {
        // reset stuff
        self.isValid = false
    }        
}

获取仅属性的另一种方法

public var isValid: Bool {
   return true
}
isValid = false // Cannot assign to property: 'isValid' is a get-only property

最新更新