如何为运营商编写扩展?

时间:2017-07-09 06:14:11

标签: swift

例如,为运营商编写扩展程序">"比较CGSize

let sizeA = CGSize(...)
let sizeB = CGSize(...)
sizeA > sizeB // How to let operator ">" support CGSize

3 个答案:

答案 0 :(得分:2)

只需为>定义CGSize函数:

extension CGSize {
    static func > (_ lhs: CGSize, _ rhs: CGSize) -> Bool {
        // Implement as needed
        return lhs.width > rhs.width && lhs.height > rhs.height
    }
}

答案 1 :(得分:2)

您可以将CGSize扩展为符合Comparable协议。 @MartinR明白了这一点。我更新了我的答案,将尺寸作为面积比较进行比较。

extension CGSize {
    public static func <(lhs: CGSize, rhs: CGSize) -> Bool {
        return (lhs.width * lhs.height) < (rhs.width * rhs.height)
    }


    public static func >(lhs: CGSize, rhs: CGSize) -> Bool {
        return (lhs.width * lhs.height) > (rhs.width * rhs.height)
    }
}

答案 2 :(得分:1)

只是让运营商超载&gt;

extension CGSize{
    static func >(_ left: CGSize, _ right: CGSize)->Bool{
        return left.width*left.height > right.width*right.height
    }
}