我们说我有以下协议:
protocol Driver {
associatedtype Car
}
与继承自Driver
的协议相比,明确将Car
设置为RaceCar
类型。
protocol RacingDriver: Driver {
typealias Car = RaceCar
}
为什么我仍然会收到错误
protocol' RacingDriver'只能用作通用约束 因为它有自我或相关的类型要求
在做var driver: RacingDriver
时?
背景故事:
基本上我想要的是一个变量,它可以是符合Driver
的任何类型,只要该类型的Car
被定义为RaceCar
。
示例:
protocol Driver {
associatedtype Car
}
protocol RacingDriver: Driver {
typealias Car = RaceCar
}
struct NascarDriver: RacingDriver {}
struct IndyDriver: RacingDriver {}
struct NormalDriver: Driver {}
var racingDriver: RacingDriver // This could be either a NascarDriver or IndyDriver but not a NormalDriver!
我怎么能实现这个目标?
除了类型擦除之外还有其他方法吗?
我想避免从RacingDriver
基类进行子类化。
提前致谢!