我想知道计算的get和set属性的执行过程。
我的代码在这里:
var operandstack = Array<Double>()
@IBAction func enter()
{
println("FUNCTION enter")
typingNew = false
operandstack.append(displayvalue)
println("\(operandstack)")
}
var displayvalue : Double {
get {
println("get value==\(display.text)")
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set {
println("set vaslue== \(newValue)")
display.text="\(newValue)"
typingNew=false
}
}
println
适用于get
方法而不是set
,我还需要知道哪些首先执行。
我正在使用Swift 1.2,Xcode 6.4
答案 0 :(得分:2)
如果要访问displayvalue的值,则调用get部分,而在更改displayvalue中的值时将调用set部分。
var x = displayvalue // get will be called --> print(get value== ..)
displayvalue = 2.0 // set will be called --> print(set vaslue== 2.0)
答案 1 :(得分:2)
使用此代码:
var operandstack = Array<Double>()
@IBAction func enter()
{
println("FUNCTION enter")
typingNew = false
operandstack.append(displayvalue)
println("\(operandstack)")
}
var displayvalue : Double {
get {
println("get value==\(display.text)")
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set {
println("set vaslue== \(newValue)")
display.text="\(newValue)"
typingNew=false
}
}
你从不使用setter
。尝试为DisplayText
分配一个值,然后您就会看到该字符。
例如:
var operandstack = Array<Double>()
@IBAction func enter()
{
println("FUNCTION enter")
typingNew = false
displayvalue = 2.0 // <-- Here you use the setter
operandstack.append(displayvalue)
println("\(operandstack)")
}
顺便说一下,代码operandstack.append(displayvalue)
会调用getter
,因为您希望获取 displayvalue
的值,并将其放入operandstack
答案 2 :(得分:0)
要调用get方法,必须为计算属性displayvalue
指定一个新值。这是调用get方法的唯一机会。
关于你的第二个问题,这取决于你是先获得财产还是首先为其分配新价值。