Swift 中 CGPoint 的数学运算

use*_*ser 4 swift

我想将 2 个 CGPoints 加在一起,然后我意识到没有为此定义函数,所以我把它写下来,我希望专业人士看看这个代码是否有任何错误或改进,但后来我脑子里出现了一个大问题,是吗?这么多的工作、编码和定制苹果都没有完成吗?我错过了什么吗?每个在 Swift 中使用 CGPoint 的人在某些时候都需要对其进行数学计算,那么为什么我们一开始就没有它呢?也感谢您查看代码并更正。

extension CGPoint {
    
    static func + (lhs: CGPoint, rhs: CGPoint) -> CGPoint {
        
        return CGPoint(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
    }
    
}
Run Code Online (Sandbox Code Playgroud)

向LeoDabus大声喊叫:更新:+=

extension CGPoint {

    static func += (lhs: inout CGPoint, rhs: CGPoint)  {
        
        lhs = lhs + rhs
        
    }

}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 5

添加两个CGPoint 严格来说没有意义。这并不是完全错误的。它只是没有意义,因为点是坐标,而不是偏移量。“芝加哥+纽约”并不是一个新地点。

通常,您会使用 CGVector、CGSize/NSSize 或 UIOffset 来偏移 CGPoint。它们也没有+运算符,但将运算符添加到 CGPoint+CGVector 而不是两个 CGPoint 更有意义。

但如果特别方便的话,您可以按照自己的方式随意添加。