Swift Type Erasure-创建协议数组

时间:2018-07-11 21:25:40

标签: swift enums type-erasure

我正在尝试创建包装器结构,以便可以使用一系列协议。 我看过几部关于类型擦除的视频,但我似乎无法正确地构思出一种神奇的解决方案。

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协议的枚举。

非常感谢您花了宝贵的时间查看此内容。我正在努力消除类型错误。

0 个答案:

没有答案
相关问题