gpt4 book ai didi

swift3 - Swift 中转义 nil 闭包定义

转载 作者:行者123 更新时间:2023-12-02 09:19:04 26 4
gpt4 key购买 nike

在 Objective-C 中,我可以将 nil 完成处理程序传递给任何函数。来到 Swift3,我在 nil 闭包定义上遇到了一些困难。我有一个这样定义的函数:

func doSomething ( completion : @escaping (Error?) -> ()? ) {
let error = foo( completion : { (error) in
completion (error)
})
}

现在的重点是,我尝试使用 nil 参数调用此函数来完成,因为我不关心结果,我只想启动后台事件。调用

doSomething ( completion : nil)

导致错误“nil 与类型不兼容(错误)-> ()?”这在 Obj-C 中是相当不错的。我尝试用谷歌上下搜索但没有成功。我尝试在闭包定义周围重新定位问号,但运气不佳。

如何实现这一目标?

最佳答案

I tried to relocate question mark around closure definition but not luck.

您不只是重新定位问号。您需要添加大括号。

目前,(Error?) -> ()? 是一个非可选闭包类型,具有以下两个部分:

(Error?)
Void?

如您所见,它返回一个可选的 Void ,这不是很有帮助,不是吗?

() 关联的 ? 而不是整个闭包类型。要强制它与整个闭包类型关联,只需将大括号放在您想要使其可选的内容周围即可:

((Error?) -> ())?

关于swift3 - Swift 中转义 nil 闭包定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44213775/

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