一重载
类和结构体可以为现有的运算符提供自定义的实现。
注意:这个重载运算符属于类和结构体,所以是static的
struct Vector2D {
var x = 0.0, y = 0.0
}
extension Vector2D {
static func + (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}
}
let vector = Vector2D(x: 3.0, y: 1.0)
let anotherVector = Vector2D(x: 2.0, y: 4.0)
//两个Vectore2D类型的实例可以相加了
let combinedVector = vector + anotherVector
运算符分为三种
1前缀运算符
只有一个参数,运算符放在参数前面使用 如 &a
2中缀运算符
有两个参数,运算符放在中间使用 如 a + b
3后缀运算符
只有一个参数,运算符放在参数后面使用 如 a!
二自定义
自定义运算符
在swift中还可以根据需要自定义运算符
语法: 新的运算符要使用operator 关键字在全局作用域内进行定义,同时还要指定prefix 、infix 或者postfi
x 修饰符:
prefix operator +++
//然后要使用这个运算符的类型,对其进行重载
extension Vector2D {
static prefix func +++ (vector: inout Vector2D) -> Vector2D {
vector += vector
return vector
}
}
var toBeDoubled = Vector2D(x: 1.0, y: 4.0)
let afterDoubling = +++toBeDoubled
网友评论