Swift If语句与Optionals(来自计算器Stanford / Youtube)

时间:2016-07-29 20:56:44

标签: swift youtube

使用Swift中的if语句和选项的逻辑演练问题。

在计算器标签中删除零,我不会理解为什么会发生这种情况。

大约1:10:03在Stanford youtube视频中:https://youtu.be/_IRx1zoriPo?t=1h10m3s

代码:

import UIKit

class ViewController: UIViewController {

    // linked to label
    @IBOutlet weak var display: UILabel!

    var userIsInMiddleOfTyping = false

    // linked to keys 0-9
    @IBAction func touchDigit(sender: UIButton) {
        let isDigit = sender.currentTitle!

        if userIsInMiddleOfTyping {
            let textCurrentlyInDisplay = display.text!
            display.text = textCurrentlyInDisplay + isDigit
        } else {
            display.text = isDigit
        }
        // user now typing
        userIsInMiddleOfTyping = true

    }

}

最初程序运行,标签中的零默认值设置在显示屏中。 userIsInTheMiddleOfTyping为false,因此else块运行并在计算器中显示零。然后设置为true。

第二次通过它然后是真的,现在在显示器中按下了什么。按下的内容然后连接到显示器中的任何内容。

那么发生了什么事情,显示器现在取代了零?如何替换初始值而不是连接?

我不是在寻找不同的代码,它只是一个随意的例子。任何帮助赞赏。干杯

2 个答案:

答案 0 :(得分:1)

touchDigit是一个动作。除非按下其中一个按钮,否则它不会运行

  

最初程序运行,标签中的零默认值设置在显示屏

正确

  

userIsInTheMiddleOfTyping为false,因此else块运行

不正确的。该方法无法运行,因为没有按下任何按钮

答案 1 :(得分:0)

我想我通过谈论解决了这个问题。最初bool是假的,因此在初始按键时按下了else块,并且零的显示被按下的任何键替换。然后将bool设置为true。然后所有后续的印刷都是正确的并连接起来。