我正在尝试编写Array的扩展,仅当该元素已不存在于Array中时才将该元素追加到Array中。
这是我的代码:
extension MutableCollection where Iterator.Element: Equatable {
mutating func addObjectIfNew <T: Equatable> (_ item: T) {
if !self.contains(item as! Self.Iterator.Element) {
self.append(x as! Self.Iterator.Element) // offending line
}
}
}
我收到此错误:
错误:类型为“Self”的值没有成员“append”
编写此类扩展的正确方法是什么?
更新:我无法使用Set,因为我需要对需要索引的对象(即Array)执行此操作
最佳答案
您已经将collection元素限制为可等于的,因此无需在您的方法上创建新的通用可等于的类型:
extension RangeReplaceableCollection where Element: Equatable {
mutating func appendIfNotContains(_ element: Element) {
if !contains(element) { append(element) }
}
}
关于ios - Swiftt3:如果不重复,则追加到数组的扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40796895/