了解 Ios 上的计算器代码

understand calculator code on Ios

想看看程序员是怎么解释这段代码的,最后一行有什么用? 我是新手,我不确定我是否正确理解这段代码。希望你能给出很好的详细答案,这样我就能从中受益,也能从以后的其他新手那里受益。

var UserIsInTheMiddleOfTyping = false
@IBAction func TouchedDigit(_ sender: UIButton) {
    let digit = sender.currentTitle!
    let CurrentTextinDisplay = Display.text!
    if UserIsInTheMiddleOfTyping {
    Display.text =  CurrentTextinDisplay + digit
    }else{
        Display.text = digit
    }
     UserIsInTheMiddleOfTyping = true
}

}

这是基于我对这段代码的解释的简要说明。

显然,在执行该方法之前,我们不知道用户是否正在输入任何内容,因为该方法可能已经被调用,因此 UserIsInTheMiddleOfTyping 可能是 truefalse

var UserIsInTheMiddleOfTyping = false

当他在计算器上点击一个数字时,方法 TouchedDigit(_ sender: UIButton) 被触发。

创建了一个新常量 digit 并将其设置为发件人的标题,它是 UIButton 的一个实例(标题 属性 是按钮的显示名称,例如 1, 2,3..)

创建了一个新常量 CurrentTextinDisplay 并将其设置为我认为是 UITextField 的内容(展开它,因此不为空)

let CurrentTextinDisplay = Display.text!

如果用户在调用方法之前输入了一些东西(虽然代码实现很糟糕),我们将之前创建的 digit 常量附加到 Display 实例的内容中(我猜) 保存已经输入的数字。

if UserIsInTheMiddleOfTyping { Display.text = CurrentTextinDisplay + digit }

否则,如果用户输入第一个数字,则设置 Display 实例以保存第一个 digit

else{ Display.text = digit }

在返回方法之前将 UserIsInTheMiddleOfTyping 设置为 true。 (下次触发该方法时,我们肯定会输入 if 语句并附加新数字。)

UserIsInTheMiddleOfTyping = true

我个人会缩减代码如下:

//There is no need to save in a variable if the user is in the middle of typing
//Because he will be in this state only when the method is triggered, therefore just shrink as follows:

@IBAction func TouchedDigit(_ sender: UIButton) {

    //Safe unwrapping of sender.currentTitle:
    if let actualDigit = sender.currentTitle {

        //Safe unwrapping of Display.text:
        if let actualText = Display.text {

            Display.text =  actualText + actualDigit


        }

    }

}

希望这对您有所帮助,如果有帮助,请将问题标记为正确。

再见