Swift 区分清除 (C) 和全部清除 (AC)
Swift differentiate Clear (C) and All clear (AC)
你好我是初学者,我正在构建一个 RPN 计算器。
我所有的操作都是在一个名为 calcengine 的单独 viewcontroller 中完成的。
我有一些 AC 的代码,我有两个问题:
@IBAction func AllClear(sender: UIButton) {
userHasStartedTyping = false
labelDisplay.text = "\(0)"
self.calcEngine!.operandStack.removeAll()
}
这里是viewcontroller中的计算代码:
@IBAction func operation(sender: UIButton) {
let operation = sender.currentTitle!
if userHasStartedTyping {
Enter()
}
self.displayValue = (self.calcEngine?.operate(operation))!
Enter()
}
以及calcengine中计算的代码:
class CalculatorEngine: NSObject
{
var operandStack = Array<Double>() //array
func updateStackWithValue(value: Double)
{ self.operandStack.append(value) }
func operate(operation: String) ->Double
{ switch operation
{
case "×":
if operandStack.count >= 2 {
return self.operandStack.removeLast() * self.operandStack.removeLast()
}
case "÷":
if operandStack.count >= 2 {
return self.operandStack.removeFirst() / self.operandStack.removeLast()
}
case "+":
if operandStack.count >= 2 {
return self.operandStack.removeLast() + self.operandStack.removeLast()
}
case "−":
if operandStack.count >= 2 {
return self.operandStack.removeFirst() - self.operandStack.removeLast()
}
default:break
}
return 0.0
}
}
- 这段代码是否正确清除所有已经完成的计算。
- 我如何才能将此函数与 Clear 函数区分开来并为 clear 构建代码?
计算器上的典型 "Clear" 按钮只会清除用户输入的数字。在您的情况下,这类似于 AllClear() 但不会清空您的 RPN 堆栈:
@IBAction func Clear(sender: UIButton)
{
userHasStartedTyping = false
labelDisplay.text = "\(0)"
}
你好我是初学者,我正在构建一个 RPN 计算器。 我所有的操作都是在一个名为 calcengine 的单独 viewcontroller 中完成的。 我有一些 AC 的代码,我有两个问题:
@IBAction func AllClear(sender: UIButton) {
userHasStartedTyping = false
labelDisplay.text = "\(0)"
self.calcEngine!.operandStack.removeAll()
}
这里是viewcontroller中的计算代码:
@IBAction func operation(sender: UIButton) {
let operation = sender.currentTitle!
if userHasStartedTyping {
Enter()
}
self.displayValue = (self.calcEngine?.operate(operation))!
Enter()
}
以及calcengine中计算的代码:
class CalculatorEngine: NSObject
{
var operandStack = Array<Double>() //array
func updateStackWithValue(value: Double)
{ self.operandStack.append(value) }
func operate(operation: String) ->Double
{ switch operation
{
case "×":
if operandStack.count >= 2 {
return self.operandStack.removeLast() * self.operandStack.removeLast()
}
case "÷":
if operandStack.count >= 2 {
return self.operandStack.removeFirst() / self.operandStack.removeLast()
}
case "+":
if operandStack.count >= 2 {
return self.operandStack.removeLast() + self.operandStack.removeLast()
}
case "−":
if operandStack.count >= 2 {
return self.operandStack.removeFirst() - self.operandStack.removeLast()
}
default:break
}
return 0.0
}
}
- 这段代码是否正确清除所有已经完成的计算。
- 我如何才能将此函数与 Clear 函数区分开来并为 clear 构建代码?
计算器上的典型 "Clear" 按钮只会清除用户输入的数字。在您的情况下,这类似于 AllClear() 但不会清空您的 RPN 堆栈:
@IBAction func Clear(sender: UIButton)
{
userHasStartedTyping = false
labelDisplay.text = "\(0)"
}