Swift 中的 getter 和 setter

Getters and Setters in Swift

为什么我们需要在下面 Swift.

中的特定情况下使用 setter

我正在尝试将 'display.text' String 转换为 Double。我知道 getter 带回 String 值并将其转换为 Double 并将此值分配给变量 newValue.

问题:如果我们只是将 display.text 值转换为 Double,为什么我们使用 = "\(newValue)" 再次将其设置回 String

var doubleValue: Double {
    get {
        return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
    }
    set {
        display.text = "\(newValue)"
    }
}

I understand that getter brings back String value and converts it to Double and assigns this value to variable newValue.

这是不正确的。 getter 只是 returns 的两倍。 getter中没有newValue

在setter中,newValue是"the implied argument of the setter."的快捷方式,显式语法是这样的:

var doubleValue: Double {
    ...
    set(newValue) {
        display.text = "\(newValue)"
    }
}

为了为 swift 变量覆盖 setter 和 getter,请使用下面给出的代码

var temX : Int? 
var x: Int?{

set(newX){

   temX = newX

}

get{

    return temX

}

我们需要将变量的值保存在一个临时变量中,因为试图访问其 getter/setter 被覆盖的同一个变量将导致无限循环。

我们可以像这样简单地调用setter

x = 10

Getter 将在给定代码行下方触发时调用

var newVar = x