关于Swift中的值设置和getter以及setter的问题

时间:2015-07-28 14:46:56

标签: ios swift

嗨,我刚接过斯威夫特,正在跟随斯坦福大学的开放课程。当我在userIsInTheMiddleOfTyping = false之前放置线时,我正在制作这个计算器并在func输入部分的operandStack.append(displayValue)行获得断点。将线放在函数的底部后,问题就解决了。但为什么?

另外,我没有得到get和设置在displayValue部分的部分。任何人都可以帮助解释这部分是如何执行的。 newValue来自哪里?为什么它代表显示器上的任何值?遵循代码。我将不胜感激任何答案和评论!

class ViewController: UIViewController {

    @IBOutlet weak var display: UILabel!

    var userIsInTheMiddleOfTypingAnNumber = false

    @IBAction func AppendDigit(sender: UIButton) {
        let digit = sender.currentTitle!
        if userIsInTheMiddleOfTypingAnNumber {
            display.text = display.text! + digit
        }
        else{
            display.text = digit
            userIsInTheMiddleOfTypingAnNumber = true
        }
    }
    var operandStack = Array<Double>()
    @IBAction func enter() {
        operandStack.append(displayValue)
        println("operandStack=\(operandStack)")
        userIsInTheMiddleOfTypingAnNumber = false
    }

    var displayValue: Double{
        get{
            return NSNumberFormatter().numberFromString(display.text!)!.doubleValue

        }
        set{
            display.text = "\(newValue)"
            userIsInTheMiddleOfTypingAnNumber = false

        }

    }
}

1 个答案:

答案 0 :(得分:0)

getset是Swift中用于定义属性的自定义getter和setter的关键字。

newValue是将在分配器末尾分配给变量的新值的默认名称,它允许您在分配之前检查各种内容。

对于你问题的第一部分,我并不完全明白什么不适合你。