在Swift中,系统定义的操作符有时候对于自己定义的结构体或类的使用不是很方便,所以我们需要自定义操作符来简化操作。Swift中的操作符重载比较简单,只需要在结构体或类中定义并实现重载的方法即可,单目操作符传入一个参数、双目操作符传入两个参数。实例如下:
// 定义一个结构体
struct p {
var x: Int
var y: Int
//重载+操作符
static func +(lhs: p, rhs: p) -> p {
return p(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
}
//重载+=操作符
static func +=(lhs: inout p, rhs: p) {
lhs.x += rhs.x
lhs.y += rhs.y
}
}
var p1 = p(x: 1, y: 1)
var p2 = p(x: 2, y: 2)
var p3 = p1 + p2
print(p1) // p(x: 1, y: 1)
print(p2) // p(x: 2, y: 2)
print(p3) // p(x: 3, y: 3)
p3 += p1
print(p3) // p(x: 4, y: 4)