gpt4 book ai didi

swift - 如何在 Swift 中抑制返回类型为 Void 的闭包的隐式返回

转载 作者:搜寻专家 更新时间:2023-11-01 05:41:11 24 4
gpt4 key购买 nike

假设我们有一个像这样的闭包:(用作 completionHandler)

func doSomething (completionHandler : (done : Bool)->Void )->Void {
...
completionHandler(true)
}

现在如果我们想做这样的事情:

doSomething({ (done : Bool)-> Void
var data : NSDictionary = NSDictionary()
data.setValue("data1", forKey: "data1") // 1
data.setValue("data2", forKey: "data2") // 2
data.setValue("data3", forKey: "data3") // 3
})

它在//1 行返回并忽略剩余的行,因为 NSDictionarysetValue 的返回类型是 Void。我的问题是,有没有办法抑制这种行为?

最佳答案

我用您的代码重新创建了您的示例(稍作调整),没有遇到您描述的问题。不过,我改用了 swift 字典,因为我不了解 Obj-C。

func doSomething(completionHandler: Bool -> Void) {
completionHandler(true)
}

doSomething() { finished in
var data = [String: String]()
data.updateValue("data1", forKey: "data1") // 1
data.updateValue("data2", forKey: "data2") // 2
data.updateValue("data3", forKey: "data3") // 3

for (key, value) in data {
println("Key: \(key) & Value: \(value)")
}
}

输出是:

Key: data2 & Value: data2
Key: data1 & Value: data1 // Not sure why data1 is second here
Key: data3 & Value: data3

我怀疑使用 NSDictionary 可能是它的原因,也许是其他原因导致它返回?

关于swift - 如何在 Swift 中抑制返回类型为 Void 的闭包的隐式返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158873/

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