繁体   English   中英

快速关闭函数返回

[英]Swift closure return from function

在检查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
        }
      }

     ...
     ...
    }

您将需要使用其他机制。 也许还可以说你应该马上回来。

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 }

     ...
     ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM