假设我们有以下目标:
- 我们想使用actors。
- 我们想使用依赖注入(Dependency Injection),并通过DI解析actors。
- 我们想将actors隐藏在协议后面,以便我们可以变化实现方式。
- 我们想保持actor隔离,否则使用actors就没有意义。
protocol Zippity {
func foo()
}
actor Zappity: Zippity {
func foo() {} // Doesn't compile
}
我可以使用……使其编译通过。
actor Zappity: Zippity {
nonisolated func foo() {}
}
... 但这似乎违背了初衷。我也尝试过声明接口方法为async
,但它也无法编译。
我可以想到几种合理的解决方法,包括组合、调用隔离方法的nonisolated async
方法等,但我想知道是否有我遗漏的内容。