gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 15:15:59 25 4
gpt4 key购买 nike

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

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