iOS Developer程序员

swift3.0 自定义操作符

2017-06-02  本文已影响121人  恨鐵不成金

如果我们要新加操作符的话,需要先对其进行声明,告诉编译器这个符号其实是一个操作符。添加如下代码

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)
上一篇 下一篇

猜你喜欢

热点阅读