【问题标题】:In Swift, is there a better way to initialize a "get" only variable?在 Swift 中,有没有更好的方法来初始化“get”唯一的变量?
【发布时间】:2015-03-13 18:04:46
【问题描述】:

假设我有一个班级MyClass,它可以处于有效或无效状态。所以我用一个名为isValid 的布尔值来跟踪这一点。我希望这个值初始化为false,直到类的initialize 函数被调用。 initialize(以及相应的reset 函数)将能够直接更改isValid bool 的值。这是我到目前为止设置的:

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
  }

}

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

【问题讨论】:

    标签: ios swift accessor


    【解决方案1】:

    只需将您的二传手设为私有即可。见Access Control

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

    【讨论】:

    • 是的!我不知道那个关键字,但这正是我正在寻找的,我不必再有一个重复的私有变量了。谢谢。
    • 太棒了,谢谢!!!不知道我是怎么错过那个选项的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 2011-03-15
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2017-04-22
    • 2012-03-23
    相关资源
    最近更新 更多