gpt4 book ai didi

swift - 关闭时缺少返回预计返回 'Void?'

转载 作者:行者123 更新时间:2023-12-04 00:14:15 25 4
gpt4 key购买 nike

我有一个我无法理解的问题,我有返回 Void 的完成处理程序?

_ completionHandler: @escaping ((Int) -> Void?)
当我像这样使用它时:
service.getItems({ val in
row.hidden = Condition.init(booleanLiteral: val == 0)
row.evaluateHidden()
})
xCode 显示一个

Missing return in a closure expected to return 'Void?'


所以我必须补充
return nil
更重要的是,如果我只有 1 行关闭,我不需要返回(我假设它将 1 行视为返回)。在返回 null 的闭包中返回 nil 有什么意义?这是一个错误还是某种我不明白的快速功能?

最佳答案

在您的闭包中指定了返回类型(这里是 Optional Void Void? ),因此编译器将始终期望返回值作为函数或闭包的结果。
由于这是一个可选的 Void Void?您仍然必须返回 nil或返回 Void .在返回类型为非可选的函数/闭包中 Void (与此处没有返回类型 f.e 相同:func returnVoid() { /* do something */ }您不必显式编写 return 关键字,但是编译器无论如何都会将其插入到函数中。
是的,从 Swift 5.1 开始,当只有一个表达式时,您可以省略 return 关键字。 (Source)
至于您的情况,您可以将完成处理程序更改为:_ completionHandler: @escaping ((Int) -> Void)或等效 _ completionHandler: @escaping ((Int) -> ())可选空Void?因为您的情况下的返回类型似乎没有必要。

关于swift - 关闭时缺少返回预计返回 'Void?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65036638/

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