【发布时间】:2017-02-27 15:14:18
【问题描述】:
我尝试实现以下方法,通过比较字典数组的特定键来删除字典数组中的双重条目。但是,由于错误,此扩展方法将不起作用:
二元运算符 == 不能应用于两个 'Equatable' 操作数
这些显然是等价的并且是相同的类型(Iterator.Element.Value),那么为什么它不起作用呢?
我看到它将 Equatable 视为特定类型,而不是约束。我无法使用泛型类型或编写where Iterator.Element == [String: Any], Iterator.Element.Value: Equatable。
你们有什么线索可以解决这个问题吗?
extension Sequence where Iterator.Element == [String: Equatable] {
public func removeDoubles(byKey uniqueKey: String) -> [Iterator.Element] {
var uniqueValues: [Iterator.Element.Value] = []
var noDoubles: [Iterator.Element] = []
for item in self {
if let itemValue = item[uniqueKey] {
if (uniqueValues.contains { element in
return itemValue == element
}) {
uniqueValues.append(itemValue)
noDoubles.append(item)
}
}
}
return noDoubles
}
}
【问题讨论】:
标签: swift sequence extension-methods equatable