gpt4 book ai didi

ios - Swift 5.5 异步让 - 错误 : expression is 'async' but is not marked with 'await'

转载 作者:行者123 更新时间:2023-12-04 11:31:55 26 4
gpt4 key购买 nike

WWDC21 介绍 swift 5.5 , 与 异步/等待 .关注 Explore structured concurrency in SwiftMeet async/await in Swift WWDC21 session ,我正在尝试使用 异步让 功能。
这是我的游乐场代码:

func doIt() async -> String {
let t = TimeInterval.random(in: 0.25 ... 2.0)
Thread.sleep(forTimeInterval: t)
return String("\(Double.random(in: 0...1000))")
}

async {
async let a = doIt()
async let b = doIt()
async let c = doIt()
async let d = doIt()

let results = await [a, b, c, d]
for result in results {
print(" \(result)")
}
}
但是,对于每个“async let”行,我都会收到此错误:
error: AsyncLetSwift55WWDC21.playground:12:15: error: expression is 'async' but is not marked with 'await'
async let a = doIt()
^
await
Paul Hudson 的博客展示了这个例子:
Hacking With Swift async let example
探索结构化货币视频在 8:10 左右有这个例子:
enter image description here
编辑:这似乎是一个特定于游乐场的问题。根据 Apple Developer Forums 中关于同一问题的建议,运行相同的代码(好吧,我确实在源文件的末尾添加了 sleep(10) 在 macOS 的异步 block 之后,因此应用程序不会在异步调用完成之前终止)作为 macOS 命令行项目没有给出错误并产生正确的输出。
这是一个错误,还是我只是不明白什么?

最佳答案

我的建议是:不要在操场上尝试这个。游乐场还没有为这些东西做好准备。您的代码在实际项目中编译并运行良好。这是一个例子:

class ViewController: UIViewController {

func doIt() async -> String {
let t = TimeInterval.random(in: 0.25 ... 2.0)
Thread.sleep(forTimeInterval: t)
return String("\(Double.random(in: 0...1000))")
}
func test() {
async {
async let a = doIt()
async let b = doIt()
async let c = doIt()
async let d = doIt()

let results = await [a, b, c, d]
for result in results {
print(" \(result)")
}
}
}

override func viewDidLoad() {
super.viewDidLoad()
test()
}
}

关于ios - Swift 5.5 异步让 - 错误 : expression is 'async' but is not marked with 'await' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67927688/

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