当 newValue 没有分配任何内容时,为啥这个 swift 代码可以工作?

Posted

技术标签:

【中文标题】当 newValue 没有分配任何内容时,为啥这个 swift 代码可以工作?【英文标题】:Why does this swift code work when newValue has nothing assigned to it?当 newValue 没有分配任何内容时,为什么这个 swift 代码可以工作? 【发布时间】:2015-09-29 17:59:46 【问题描述】:
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 ios 8课程中使用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 的默认设置,相反,分配值的缺失让我感到困惑)

【问题讨论】:

【参考方案1】:

"newValue" 是 swift 中隐式定义的变量。 他所做的是一种非常巧妙的方法,让标签显示双“displayValue”的值每次更改 displayValue 时,标签都会自动更新为最新的(双)值。 或者当你写:displayValue = 45.0,标签也会显示这个值。当您经常需要使用从数据库、rest 接口等获取的数据更新文本字段或标签时非常方便。“newValue”所做的是获取最后一个“setter”值。

【讨论】:

以上是关于当 newValue 没有分配任何内容时,为啥这个 swift 代码可以工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥新添加的 HBase 区域服务器无法获取分配的区域?

为啥在没有初始化任何内容时使用初始化列表?

TFS 构建成功,但为啥没有将任何内容部署到目标系统文件夹

为啥我的动态分配的数组没有保存正确的值?

当用户输入除整数以外的任何内容时,为啥我的程序会无限循环输出? C++ [重复]

为啥这个 LEFT JOIN 会消除另一个表中没有任何内容的记录?