首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数返回Swift闭包

从函数返回Swift闭包
EN

Stack Overflow用户
提问于 2019-08-30 16:33:35
回答 1查看 433关注 0票数 1

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

代码语言:javascript
复制
    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
    }

然后在我的函数中:

代码语言:javascript
复制
  public func stopRunning() {
      synchronized( self ) {
        if status != .finished  {
            return;//<--Need to return from the function here, not just closure
        }
      }

     ...
     ...
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-30 16:57:23

你需要使用一些其他的机制。或者回个布尔说你应该马上回去。

代码语言:javascript
复制
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 }

     ...
     ...
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57723269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档