Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法推断泛型参数_Ios_Swift_Generics - Fatal编程技术网

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
    }
}