Ios 无法推断泛型参数
我已经为不同的项编写了一个数组扩展Ios 无法推断泛型参数,ios,swift,generics,Ios,Swift,Generics,我已经为不同的项编写了一个数组扩展 extension Array { func distinct<T: Equatable>() -> [T]{ var unique = [T]() for i in self{ if let item = i as? T { if !unique.contains(item){ unique.append(
extension Array {
func distinct<T: Equatable>() -> [T]{
var unique = [T]()
for i in self{
if let item = i as? T {
if !unique.contains(item){
unique.append(item)
}
}
}
return unique
}
}
但它给出了错误“无法推断通用参数'T'”您可以通过告诉编译器您期望的内容来消除此错误:
let a: [String] = words.distinct()
问题是编译器不知道泛型t是什么。
更好的解决方案是告诉编译器您为其元素可相等的所有数组定义了不同的函数:
extension Array where Element : Equatable {
func distinct() -> [Element]{
var unique = [Element]()
for i in self{
if let item = i as? Element {
if !unique.contains(item){
unique.append(item)
}
}
}
return unique
}
}
看看。。。
extension Array where Element : Equatable {
func distinct() -> [Element]{
var unique = [Element]()
for i in self{
if let item = i as? Element {
if !unique.contains(item){
unique.append(item)
}
}
}
return unique
}
}