我对 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/