如果我们要新加操作符的话,需要先对其进行声明,告诉编译器这个符号其实是一个操作符。添加如下代码
precedencegroup DorProductPrecedence{
associativity: none
higherThan: MultiplicationPrecedence
}
infix operator +*: DorProductPrecedence
precedencegroup
定义一个操作符优先级(优先级的完整列表)
associativity
多个同类操作符顺序出现的计算顺序
higherThan
运算符的优先级, higherThan指的是高于某个其他组, 也可以用lowerThan来指定优先级低于某个其他组
infix
表示定义的是一个中位操作符, 其他的修饰符包括prefix 和 postfix
完整示例代码:
struct Vector2D {
var x:Double = 0.0
var y:Double = 0.0
}
precedencegroup DorProductPrecedence{
associativity: none
higherThan: MultiplicationPrecedence
}
infix operator +*: DorProductPrecedence
func +* (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}
let v1 = Vector2D(x: 1.2, y: 2.1)
let v2 = Vector2D(x: 2.3, y: 4.4)
let v3 = v1 +* v2
print(v3)