Есть ли способ предотвратить внесение изменений в переменную через некоторое время? - PullRequest
0 голосов
/ 18 февраля 2019

Первоначально я хочу продолжать изменять переменную до и после, после чего я хочу защитить и сохранить значение в той же самой переменной и предотвратить дальнейшие изменения в ней.

Для этого я знаю,что в 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

После этого процесса переменная версии должна впредь быть неизменной.

1 Ответ

0 голосов
/ 18 февраля 2019

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*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...