在 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
}
}
假设我有一个 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
}
}