在此处针对 Swift 语言的 Actor 模型的提案文件中,不允许跨 Actor 调用返回非可发送类型的函数。
但是,我尝试了论文中的示例,它可以编译和运行,而它假设会发出错误。
class Person: CustomStringConvertible {
var name: String = ""
var description: String {
return "Person name: \(name)"
}
}
actor BankAccount {
var owners: [Person] = [Person()]
func primaryOwner() -> Person? {
return owners.first
}
}
@main
struct EntryPoint {
static func main() async {
let account = BankAccount()
if let owner = await account.primaryOwner() {
owner.name = "FooBar" // Change actor's mutable state outside of actor-isolated context
}
print(await account.owners)
}
}
// Output: [Person name: FooBar]
我的斯威夫特版本
$ swift --version
Swift version 5.5.1 (swift-5.5.1-RELEASE)
Target: x86_64-unknown-linux-gnu
我在上面的代码中做错了吗?如果我做得对,为什么实施不符合提案文件?
谢谢。