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
为什么我们需要在下面 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