gpt4 book ai didi

swift - 常量 'result' 被推断为 () 类型,这可能是意外的

转载 作者:IT王子 更新时间:2023-10-29 05:43:31 25 4
gpt4 key购买 nike

@IBAction func operate(sender: UIButton) {

if let operation = sender.currentTitle {
if let result = brain.performOperation(operation) {

displayValue = result
}
else {
displayValue = 0.0
}

}
}

我是编码新手,请原谅我的编码格式和其他不一致之处。我一直在尝试 iOS 8 intro to swift programming stanford university 教授的类(class),但我遇到了修改后的计算器的问题。

我得到三个错误。第一个是 swift 编译器警告 - 在

if let result = brain.performOperation(operation)

它说

constant 'result' inferred to have type () which may be unexpected.

它给了我这样做的建议----

if let result: () = brain.performOperation(operation)

另外两个错误是

Bound value in a conditional binding must be of Optional type at if let result line

Cannot assign a value of type () to a value of Double at "displayValue = result"

Here is the github link如果有人需要有关代码的更多信息。

提前致谢。

最佳答案

从错误中猜测,我预计 performOperation() 应该返回 Double?(可选的 double),而如果是,它什么也不返回。

即它的签名可能是:

func performOperation(operation: String) {
// ...
}

.. 而实际上它应该是:

func performOperation(operation: String) -> Double? {
// ...
}

我这么认为的原因是这一行:if let result = brain.performOperation(operation) 是调用“unwrapping the optional”,它期望分配的值是一个可选类型。稍后您将展开的值分配给似乎是 Double 类型的变量。

顺便说一句,更短(也更易读)的写法是:

displayValue = brain.performOperation(operation) ?? 0.0

关于swift - 常量 'result' 被推断为 () 类型,这可能是意外的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com