我尝试检查演员的行为。这是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内部才能引用actor-isolated属性'max'
那么如何访问actor-isolated属性呢?
也许这是编译器或样例代码中的错误吗?
Xcode 版本 13.0 beta (13A5154h) Swift 版本 5.5
async { print(await logger.max) }
。"Actor-isolated property 'max' can only be referenced from inside the actor" 这条信息似乎并不是很有帮助... - Sweeperasync { ^~~~~
- Denis Kreshikhin