在Swift中,如何扩展泛型类型的协议?

时间:2016-10-27 15:54:03

标签: swift generics protocols extension-methods

我想为实现Comparable的所有类添加一个函数,例如Int,Float,CGFloat。这是我的代码,报告错误:

extension Comparable{
    func constraintBetween<T: Comparable>(a:T , b: T) -> T{
        if self < a {
            return a
        }else if self > b{
            return b
        }else{
            return self
        }
    }
}

enter image description here 有人可以帮忙做对吗?提前谢谢!

1 个答案:

答案 0 :(得分:4)

Self是采用该协议的类型的替身:

extension Comparable {
    func constraintBetween(a: Self, b: Self) -> Self {
        if self < a {
            return a
        } else if self > b {
            return b
        } else {
            return self
        }
    }
}