为什么这个 swift 代码在 newValue 没有分配任何内容时有效?
Why does this swift code work when newValue has nothing assigned to it?
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var display: UILabel!
var inMid = false
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if inMid{
display.text = display.text! + digit
}else{
display.text = digit
inMid = true
}
}
var operandStack = Array<Double>()
@IBAction func enter() {
inMid = false
operandStack.append(displayValue)
println("operandStack = \(operandStack)")
}
var displayValue:Double{
get {
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set{
display.text = "\(newValue)"
}
}
}
这是Standford最新的IOS8门课程使用swift搭建计算器的部分代码(Youtube地址:https://www.youtube.com/watch?v=QLJtT7eSykg)
每次我调用 enter()(按 enter)时,一个新数字应该保存在堆栈中。例如:"8,enter()" --> {8}, "16,enter()" --> {8,16}.
我对此处计算的 属性 "displayValue" 感到困惑。没有分配给 "newValue"。如果有类似 "displayValue = 8" 的东西,那么我知道 "newValue" 是 8,这一切都有意义。但是没有这样的东西。
怎么还能用?
(我的意思不是名称"newValue"本身,我知道这是Swift的默认设置,相反,赋值的缺失是让我感到困惑的那个)
"newValue"是swift中隐式定义的变量。
他所做的是让标签显示 double "displayValue" 的值的一种非常巧妙的方法。每次 displayValue 更改时,标签都会自动更新为最新的(double)值。
或者当你写:displayValue = 45.0,标签也会显示这个值。当您经常需要使用从数据库、rest 接口等获取的数据更新文本字段或标签时非常方便。"newValue" 所做的是获取最后一个 "setter" 值。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var display: UILabel!
var inMid = false
@IBAction func appendDigit(sender: UIButton) {
let digit = sender.currentTitle!
if inMid{
display.text = display.text! + digit
}else{
display.text = digit
inMid = true
}
}
var operandStack = Array<Double>()
@IBAction func enter() {
inMid = false
operandStack.append(displayValue)
println("operandStack = \(operandStack)")
}
var displayValue:Double{
get {
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set{
display.text = "\(newValue)"
}
}
}
这是Standford最新的IOS8门课程使用swift搭建计算器的部分代码(Youtube地址:https://www.youtube.com/watch?v=QLJtT7eSykg)
每次我调用 enter()(按 enter)时,一个新数字应该保存在堆栈中。例如:"8,enter()" --> {8}, "16,enter()" --> {8,16}.
我对此处计算的 属性 "displayValue" 感到困惑。没有分配给 "newValue"。如果有类似 "displayValue = 8" 的东西,那么我知道 "newValue" 是 8,这一切都有意义。但是没有这样的东西。
怎么还能用?
(我的意思不是名称"newValue"本身,我知道这是Swift的默认设置,相反,赋值的缺失是让我感到困惑的那个)
"newValue"是swift中隐式定义的变量。 他所做的是让标签显示 double "displayValue" 的值的一种非常巧妙的方法。每次 displayValue 更改时,标签都会自动更新为最新的(double)值。 或者当你写:displayValue = 45.0,标签也会显示这个值。当您经常需要使用从数据库、rest 接口等获取的数据更新文本字段或标签时非常方便。"newValue" 所做的是获取最后一个 "setter" 值。