@IBAction func operate(sender: UIButton) {
if let operation = sender.currentTitle {
if let result = brain.performOperation(operation) {
displayValue = result
}
else {
displayValue = 0.0
}
}
}
我是编码新手,所以请原谅我的编码格式和其他不一致之处。我一直在尝试iOS 8介绍斯坦福大学教授的快速编程,我遇到了修改后的计算器问题。
我得到三个错误。第一个是快速编译警告 - 在
if let result = brain.performOperation(operation)
它说
常量'结果'推断为type()可能是意外的。
它给了我这样做的建议----
if let result: () = brain.performOperation(operation)
其他两个错误是
如果让结果行
,条件绑定中的绑定值必须是可选类型无法在“displayValue = result”中将type()的值赋值为Double
Here is the github link如果有人需要有关代码的更多信息。
提前致谢。
答案 0 :(得分:6)
从错误中猜测,我希望performOperation()
应该返回Double?
(可选的双倍),而事实上它不返回任何内容。
即。它的签名可能是:
func performOperation(operation: String) {
// ...
}
..实际上它应该是:
func performOperation(operation: String) -> Double? {
// ...
}
我认为这样的原因是:if let result = brain.performOperation(operation)
调用“展开可选”并且它期望指定的值是可选类型。稍后,将您展开的值分配给似乎为Double类型的变量。
顺便说一句,编写相同内容的更短(也更易读)的方法是:
displayValue = brain.performOperation(operation) ?? 0.0
答案 1 :(得分:1)
看起来brain.performOperation()
根本没有返回结果,
所以也没有可选值。