swift - 在函数中传递一个闭包

标签 swift

我对 Swift 有一点经验,并且遇到了将闭包作为参数传递给函数的问题。

//1.
public func changeMyStatus(to f:?, _ completion:@escaping (_ isSucced:Bool)->()){
    //

}
//2.
func goLive(_ completion:@escaping (_ isSucced:Bool)->()){

}
//3.
func goNonLive(_ completion:@escaping (_ isSucced:Bool)->()){

}

现在,我想在我的 Controller 中使用第一个函数,并想将第二个/第三个函数作为参数传递。根据第二个/第三个闭包返回的内容,第一个闭包将返回 true/false。

i)我应该在第一个函数中放入什么类型?

我也想像这样调用我类(class)的第一个函数

  changeMyStatus(to: goNonLive) { (isSuccess) in

    }

请帮忙

最佳答案

您需要更改 changeMyStatus 函数签名和实现,例如:

public func changeMyStatus(to f: (@escaping (Bool) -> ()) -> () , _ completion:@escaping (_ isSucced:Bool)->()){
    f { (status) in
        completion(status)
    }
}

你可以这样调用这些函数:

// goLive
changeMyStatus(to: goLive(_:)) { (status) in
    print(status)
}


// goNonLive
changeMyStatus(to: goNonLive(_:)) { (status) in
    print(status)
}

关于swift - 在函数中传递一个闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864636/

相关文章:

ios - 如何理解无意义的 Swift 堆栈跟踪?

swift - 使节点 'B' 和 'C' 仅与节点 'A' 发生冲突

ios - 如何检查 SpriteKit 中屏幕的两半是否有触摸?

ios - 如何为 popoverPresentationController 手动设置 anchor

swift - Base64 字符串转 UIImage

swift - 如何枚举 String 类型的枚举?

ios - NSXML 使用 Swift 将损坏的字符串解析为数组

ios - 如何在containerView中重新加载tableView?

ios - 我怎样才能激活以前停用的约束?

string - 在 Swift 中检查字符串值