swift3.0 自定义操作符

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

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容