这是基于我对这段代码的解释的简要说明。
显然,在执行该方法之前,我们不知道用户是否正在输入任何内容,因为该方法可能已经被调用,因此UserIsInTheMiddleOfTyping 可以是true 或false
var UserIsInTheMiddleOfTyping = false
当他在计算器上点击一个数字时,TouchedDigit(_ sender: UIButton) 方法被触发。
创建一个新常量digit 并将其设置为发送者的标题,它是UIButton 的一个实例(标题属性是按钮的显示名称,例如1,2,3..)
创建了一个新常量 CurrentTextinDisplay,并将其设置为我认为是 UITextField 的内容(展开它,因此不为空)
让 CurrentTextinDisplay = Display.text!
如果用户在调用方法之前输入了一些东西(虽然代码实现很糟糕),我们将之前创建的 digit 常量附加到 Display 实例的内容中(我猜)它保存了已经输入的数字.
如果 UserIsInTheMiddleOfTyping {
Display.text = CurrentTextinDisplay + 数字
}
否则,如果用户正在输入第一个数字,则将Display 实例设置为保存第一个digit
否则{
Display.text = 数字
}
在返回方法之前将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
}
}
}
希望这会有所帮助,如果有,请将问题标记为正确。
再见