例如,为运营商编写扩展程序">"比较CGSize
let sizeA = CGSize(...)
let sizeB = CGSize(...)
sizeA > sizeB // How to let operator ">" support CGSize
答案 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
}
}