gpt4 book ai didi

swift - 在 Swift 中调用具有可选类型的函数

转载 作者:搜寻专家 更新时间:2023-10-31 22:47:53 27 4
gpt4 key购买 nike

假设我有以下内容:

var didConnectObserver: NSObjectProtocol?

didConnectObserver = NSNotificationCenter.defaultCenter().addObserverForName(
MyKey, object: nil, queue: nil, usingBlock: { (note) -> Void in
...
})

在某些时候我注销了:

NSNotificationCenter.defaultCenter().removeObserver(didConnectObserver)

但这不起作用,因为 didConnectObserver 是可选的。有没有比以下更紧凑的写法:

if let obs = didConnectObserver {
NSNotificationCenter.defaultCenter().removeObserver(obs)
}

如果 didConnectObservernil,那仍然会做正确的事情吗?

最佳答案

我仍然在使用 Optionals 来掌握 map 的窍门,但我相信这会奏效:

_ = didConnectObserver.map(NSNotificationCenter.defaultCenter().removeObserver)

如果didConnectObservernil,则结果为nil,否则执行函数didConnectObserver!_ = 是抑制警告 Result of call to 'map' is unused 所必需的。

这是当您键入 didConnectObserver.map 时自动完成显示的内容:

enter image description here

这是同一概念的另一个例子:

func add5(i: Int) {
print("add 5 called")
print(i + 5)
}

let a: Int? = 10

_ = a.map(add5)

如果anil,则不会调用add5。如果 aOptional(10),则调用 add5 并打印 15

它的工作原理如下:

if a != nil {
add5(a!)
}

关于swift - 在 Swift 中调用具有可选类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33863244/

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