使用继承约束泛型类型扩展

时间:2017-02-08 16:06:38

标签: swift generics protocols extension-methods

我正在尝试为属性列表值实现类型安全。

我已经定义了一个空协议PropertyListValue,并为相应的类型创建了扩展。

protocol PropertyListValue {

}

extension Data: PropertyListValue {}
extension Date: PropertyListValue {}
extension String: PropertyListValue {}
extension Int: PropertyListValue {}
extension Double: PropertyListValue {}
extension Array: PropertyListValue where Element: PropertyListValue {}
extension Dictionary: PropertyListValue where Value: PropertyListValue {}

问题在于集合类型。我收到错误:

  

扩展类型'数组'带约束不能有继承   条款

我也尝试过使用:

extension Array<PropertyListValue>: PropertyListValue {}

但是我收到了错误:

  

必须在非专用泛型上声明约束扩展   type&#39; Array&#39;具有由&#39;其中&#39;指定的约束。条款

如果只包含协议类型,我怎样才能扩展Array和Dictionary以符合协议?

0 个答案:

没有答案