在 Swift 中,如何使用泛型扩展协议?

In Swift, How to extend a protocol with generic type?

我想为所有实现 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
        }
    }
}

任何人都可以帮助解决问题吗?提前致谢!

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

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