gpt4 book ai didi

ios - Swift 闭包从函数返回

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

在检查 Swift 闭包内的条件后如何从函数返回?从 Swift 闭包返回只是从闭包返回,而不是函数。具体来说,我在 Swift 中使用了以下 @synchronized 模拟:

    func synchronized(_ object: AnyObject, block: () -> Void) {
objc_sync_enter(object)
block()
objc_sync_exit(object)
}

func synchronized<T>(_ object: AnyObject, block: () -> T) -> T {
objc_sync_enter(object)
let result: T = block()
objc_sync_exit(object)
return result
}

然后在我的函数中:

  public func stopRunning() {
synchronized( self ) {
if status != .finished {
return;//<--Need to return from the function here, not just closure
}
}

...
...
}

最佳答案

您需要使用其他一些机制。也许返回一个 bool 值,告诉您应该立即返回。

func synchronized(_ object: AnyObject, block: () -> Bool) -> Bool 
{
objc_sync_enter(object)
defer { objc_sync_exit(object) }
return block()
}

public func stopRunning() {
guard synchronized( self, block: {
if status != .finished {
return false//<--Need to return from the function here, not just closure
}
return true
})
else { return }

...
...
}

关于ios - Swift 闭包从函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723269/

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