gpt4 book ai didi

ios - Swift 两个问号可选链接

转载 作者:行者123 更新时间:2023-11-28 11:10:46 30 4
gpt4 key购买 nike

我正在试验一些带有可选链接和两个问号的东西,但我无法理解一件事。我有这部分代码:

if let delegate = self.delegate {
delegate.webViewControllerDidCancel()
}
else {
self.navigationController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
}

这很好。完全按照我的意愿工作。如果有人遵守协议(protocol),调用 webViewControllerDidCancel,否则简单地调用 dismissViewController

不过,我试过用这种方式做同样的事情

self.delegate?.webViewControllerDidCancel() ?? self.navigationController?.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)

这对我来说似乎是合法的并且也有效,但是 XCode 给了我一个黄色的感叹号说

Result of call to '??' is unused

我想不通。这是 ??甚至应该这样工作?

最佳答案

在我看来,?? 运算符设计用于在使用可选项时设置变量,尽管它似乎确实可以作为一种机制来控制触发哪个函数 - 但事实并非如此它的直接预期用途。来自documentation :

The nil coalescing operator is shorthand for the code below:

a != nil ? a! : b

The nil coalescing operator provides a more elegant way to encapsulate this conditional checking and unwrapping in a concise and readable form.

文档中的所有示例也都是变量相关的,因此虽然操作符的功能确实适合您的用例 - Xcode 的警告与您没有使用操作符有关,因为它是假定的预期用途。

关于ios - Swift 两个问号可选链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35291912/

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