【发布时间】:2020-07-26 07:27:02
【问题描述】:
有没有办法在子类实例的数组上使用已应用于超类的数组扩展?我正在尝试通过以下方式这样做:
超类的扩展:
extension Array where Element == Superclass {
func appending(_ object:Element)-> [Element] {
var array = self
if self.filter({$0.id == object.id}).count == 0 {
array.append(object)
}
return array
}
}
子类数组的实现:
var subArray = [Subclass]()
subArray = subArray.appending(someObject)
但是,这给了我以下编译器错误:
"在 'Array' 上引用实例方法 'appending' 需要类型 “子类”和“超类”是等价的。”
有没有办法实现这个功能,还是我必须为每个子类创建单独的扩展?
【问题讨论】:
标签: arrays swift class-extensions