gpt4 book ai didi

ios - 使用同步 DispatchQueue 设置非零值的最 "Swift-like"/clean 方法是什么?

转载 作者:行者123 更新时间:2023-12-04 22:39:07 25 4
gpt4 key购买 nike

我有一个同步、并发的 DispatchQueue,我用它来获取一个值,这样它就可以在控制流中立即可用。

let isEmpty: Bool

dispatchQueue.sync {
isEmpty = self.myProtectedArray.isEmpty
}

print(isEmpty) // error

即使通过打印声明 isEmpty将始终分配一个值(由于是同步的),Swift 编译器不喜欢这样。

我应该如何将它修改为 Swift 编译器可以接受的,而不是一个粗略的解决方案?以 var isEmpty: Bool = true 开头似乎很愚蠢,因为“初始值”不清楚。

最佳答案

同步DispatchQueue方法

func sync<T>(execute work: () throws -> T) rethrows -> T

将工作项的结果返回给调用者,这意味着您可以将其作为初始化值分配给 bool 常量:
let isEmpty = dispatchQueue.sync {
return self.myProtectedArray.isEmpty
}

print(isEmpty) // Compiler happy!

正如@Rob 所说, self.不需要,因为闭包没有逃逸,而且 return在单表达式闭包的情况下可以省略关键字:
let isEmpty = dispatchQueue.sync {
myProtectedArray.isEmpty
}

关于ios - 使用同步 DispatchQueue 设置非零值的最 "Swift-like"/clean 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649330/

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