Getter在Swift 3中的setter

Vya*_*lav 6 swift swift3

我正在使用这个变量

public var tick: Int64 {
    get {
        return UserDefaults.standard.object(forKey: TICK) as? Int64 ?? 0
    }
    set(v) {
        let cur = UserDefaults.standard.object(forKey: TICK) as? Int64 ?? 0 + v
        UserDefaults.standard.set(cur, forKey: TICK)
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道,这是在内部设置器中调用getter的正确方法吗?我的意思是:

set(v) {
    let cur = /*HOW TO CALL GETTER HERE? */ + v
    UserDefaults.standard.set(cur, forKey: TICK)
}
Run Code Online (Sandbox Code Playgroud)

如果我使用self而不是/*HOW TO CALL GETTER HERE? */,它不起作用.

Fel*_*SFD 10

您只需tick在其setter中调用value()即可获取旧值:

public var tick: Int64 {
    get {
        return UserDefaults.standard.object(forKey: TICK) as? Int64 ?? 0
    }
    set(v) {
        let cur = tick + v
        UserDefaults.standard.set(cur, forKey: TICK)
    }
}
Run Code Online (Sandbox Code Playgroud)