我在Xcode 8上使用swift代码。有人可以帮我解决错误吗?它表示'string'类型的表达式模式不能匹配'operation'类型的值。错误出现在开关操作,然后出现在其中的情况。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var display: UILabel!
var userIsInTheMiddleOfTyping = false
@IBAction func Appenddigit(_ sender: UIButton) {
let digit = sender.currentTitle!
if userIsInTheMiddleOfTyping {
display.text = display.text! + digit
} else {
display.text = digit
userIsInTheMiddleOfTyping = true
}
}
@IBAction func operate(_ sender: UIButton) {
_ = sender.currentTitle!
if userIsInTheMiddleOfTyping{
enter()
}
switch Operation() {
case "×":
if operandStack.count >= 2 {
displayValue = operandStack.removeLast() * .operandStack.removeLast()
enter()
}
// case "÷":
// case "+":
// case "−":
default:
break
}
}
var operandStack: Array<Double> = []
@IBAction func enter() {
userIsInTheMiddleOfTyping = false
operandStack.append(displayValue)
print("operandStack = \(operandStack)")
}
var displayValue: Double {
get {
return NumberFormatter().number(from: display.text!)!.doubleValue
}
set {
display.text = "\(newValue)"
userIsInTheMiddleOfTyping = false
}
}
}
答案 0 :(得分:3)
在Swift 3中,Operation
是类NSOperation
的新名称。
您的表达式Operation()
正在创建Operation
对象。
switch Operation()
对我来说没有意义。
答案 1 :(得分:1)
Operation()
正在创建Operation
类型的新对象,该对象无法与作为字符串的"x"
进行比较。我想你想要的是调用一个名为operation
的函数来返回一个字符串。