我希望最初一直修改变量直到结束,然后再保护和保留同一变量中的值,并防止对该变量进行更多更改。
为此,我知道在Java中,我可以将当前变量的值交换为temp变量,销毁旧变量,然后将旧变量重新初始化为常量以存储temp的值。 或使用条件循环继续检查标志。 但我正在寻找其他解决方案
///I need something like this:
var manager = true
var version = 0.0 //initial value
while (true){
switch (choice){
case 1:{version += 1.0} //changes permitted
case 0:{break}
}
if (manager == false){
//something here to prevent any more changes to version variable
break
}
}
version += 1.0 // should not be possible now
此过程之后,version变量此后必须是不可变的。
答案 0 :(得分:2)
swift 4.2 / Xcode 10.1:
您可以使用属性观察器(willSet
/ didSet
)进行几乎所有操作。
例如:
class Versions {
var manager = true
var version: Float {
willSet(toNewVersion) {
print("\nVersion will be set:")
print("from current value: \(version)")
print("to version value: \(toNewVersion).\n")
}
didSet(fromOldVersion) {
print("Version was changed:")
print("from current value: \(fromOldVersion)")
print("to version value: \(version).\n")
//use each one (if) you need.
if version > 4.1 {
print("Prevent Changes.")
version = fromOldVersion
}
if manager == false {
print("Prevent Changes(Got False).\n")
version = fromOldVersion
}
}
}
init(version:Float) {
self.version = version
}
}
willSet
在值存储之前被调用。didSet
。一些结果:
let app: Versions = Versions(version: 1.0)
app.version = 1.1
print("version number is \(app.version)") //version number is 1.1
app.version = 2.4
print("version number is \(app.version)") //version number is 2.4
app.version = 5.0
print("version number is \(app.version)") //version number is 2.4
app.manager = false
app.version = 3.5
print("version number is \(app.version)") /*version number is 2.4*/