gpt4 book ai didi

swift - 有没有办法延迟 Swift 中的 return 语句?

转载 作者:行者123 更新时间:2023-12-04 16:37:44 26 4
gpt4 key购买 nike

我想知道是否有任何方法可以延迟函数的返回语句...一个例子:

func returnlate() -> String {
var thisStringshouldbereturned = "Wrong"
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
// Here should be the String changed
thisStringshouldbereturned = "right"
}
// The Return-Statement returns the First Value ("Wrong")
// Is there a way to delay the return Statement?
// Because you can't use 'DispatchQueue.main.asyncAfter(deadline: .now() + 1)'
return thisStringshouldbereturned
}

谢谢,祝你有美好的一天并保持健康。

展位

最佳答案

您正在寻找closure ,又名完成处理程序。

return 立即执行,无法延迟。相反,您可以使用完成处理程序,它通过传入闭包作为参数来工作。然后可以在延迟后调用此闭包。

                            /// closure here!
func returnLate(completion: @escaping ((String) -> Void)) {
var string = "Wrong"
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
string = "right"
completion(string) /// similar to `return string`
}
}

override func viewDidLoad() {
super.viewDidLoad()
returnLate { string in
print("String is \(string)") /// String is right
}
}

关于swift - 有没有办法延迟 Swift 中的 return 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67324011/

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