我正在尝试创建包装器结构,以便可以使用一系列协议。 我看过几部关于类型擦除的视频,但我似乎无法正确地构思出一种神奇的解决方案。
private lazy var properties: [AnyProperty] =
[AnyProperty(property: shape),
AnyProperty(property: color),
AnyProperty(property: number),
AnyProperty(property: shading)]
protocol Property{
static var allValues : [Self] {get}
}
struct AnyProperty<P : Property>:Property{
private var property : P
init(property : P){
self.property = property
}
static var allValues: [AnyProperty<P>]{get{return P.allValues as!
[AnyProperty<P>]}}
}
我看到我的主要问题之一是我无法返回property.allValues。我的最后一行代码可能不是正确的获取一致性。同样,主要目标是创建一个属性数组。颜色,形状,数量,阴影都是符合Property协议的枚举。
非常感谢您花了宝贵的时间查看此内容。我正在努力消除类型错误。