Swift - 运算符重载

struct Point {
    
    var x = 0, y = 0
    
}

var p1 = Point(x: 10, y: 20)
var p2 = Point(x: 11, y: 22)
let p3 = p1 + p2

在上述代码中,p3是不能这么直接相加的,我们需要重载运算符

func + (p1:Point,p2:Point) -> Point {
    Point(x: p1.x+p2.x, y: p1.y+p2.y)
}

这样就不会报错了
同样也支持多个相加

let p3 = p1 + p2 + p3 
// 可以理解为p1+p2加完后,再加p3

方法建议写在类型里面

struct Point {
    
    var x = 0, y = 0
    static func + (p1:Point,p2:Point) -> Point {
           Point(x: p1.x+p2.x, y: p1.y+p2.y)
    }
    static func - (p1:Point,p2:Point) -> Point {
           Point(x: p1.x-p2.x, y: p1.y-p2.y)
    }
    static func * (p1:Point,p2:Point) -> Point {
           Point(x: p1.x*p2.x, y: p1.y*p2.y)
    }
    static func += (p1: inout Point,p2:Point){
           p1 = p1 + p2
    } // 这个比较特别 += 是不需要返回值

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容