【发布时间】:2021-08-29 13:51:38
【问题描述】:
我尝试检查演员的行为。这是 Swift5.5 提供的新特性。
我用官方文档swift.org中的示例代码创建了一个游乐场:
import Foundation
actor TemperatureLogger {
let label: String
var measurements: [Int]
private(set) var max: Int
init(label: String, measurement: Int) {
self.label = label
self.measurements = [measurement]
self.max = measurement
}
}
let logger = TemperatureLogger(label: "Outdoors", measurement: 25)
print(await logger.max)
// Prints "25"
但是我的编译器在这个例子中失败了:
Swift 编译器错误:
'await' 在一个不支持并发的函数中
Actor 隔离属性 'max' 只能从 Actor 内部引用
那么如何访问参与者隔离的属性?
可能是编译器或示例代码中的错误?
Xcode 版本 13.0 测试版 (13A5154h) 斯威夫特 5.5 版
【问题讨论】:
-
试试
async { print(await logger.max) }。 “Actor-isolated property 'max' can only be referenced from inside the actor”消息似乎毫无帮助... -
@Sweeper 谢谢,但仍然失败
error: Actors.playground:17:1: error: cannot find 'async' in scope async { ^~~~~ -
我认为异步任务已被弃用