[英]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)"
}
}
我知道getter會帶回String值並將其轉換為Double並將此值分配給變量newValue。
這是不對的。 吸氣劑僅返回雙精度值。 吸氣劑中沒有newValue
。
在setter中, newValue
是“ 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覆蓋的同一變量將導致無限循環。
我們可以像這樣簡單地調用設置器
x = 10
在給定的代碼行以下觸發時將調用Getter
var newVar = x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.