【发布时间】:2020-04-14 09:26:47
【问题描述】:
我有一个关于 swift 协议关联类型的问题。
protocol SomeProtocol {}
protocol TestAProtocol: SomeProtocol {}
protocol TestBProtocol: SomeProtocol {}
class TestA: TestAProtocol {}
class TestB: TestBProtocol {}
protocol Service {
associatedtype S: SomeProtocol
var service: S? { get }
}
class ServiceModule: Service {
var service: TestAProtocol?
}
此代码有错误,因为 ServiceModule 中的服务类型是协议(TestAProtocol)(不是具体类型)。
class ServiceModule: Service {
var service: TestA?
}
或
class ServiceModule: Service {
var service: TestB?
}
没关系。
但我想要一个符合特定协议(例如 SomeProtocol)的协议(例如 TestAProtocol)的变量。
像这样:
class ServiceModule: Service {
var service: TestAProtocol? // or var service: TestBProtocol?
}
有可能吗?
【问题讨论】: