0

为什么我们需要在下面的 Swift 中使用 setter。

我正在尝试将 'display.text' 转换StringDouble. 我知道 getter 带回Stringvalue 并将其转换为Double并将该 value 分配给 variable newValue

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

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

2 回答 2

2

我知道 getter 带回 String 值并将其转换为 Double 并将该值分配给变量 newValue。

这是不正确的。getter 只返回双精度值。吸气剂中没有newValue

在 setter 中,newValue是“setter 的隐含参数”的快捷方式。显式语法是这样的:

var doubleValue: Double {
    ...
    set(newValue) {
        display.text = "\(newValue)"
    }
}
于 2015-05-22T21:05:27.580 回答
1

为了覆盖 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
于 2016-01-04T13:14:31.717 回答