swift之 自定义中缀运算符的优先级和结合性

自定义中缀运算符的优先级和结合性
每一个自定义的中缀运算符都y属于一个优先级组
优先级组指定了自定义中缀运算符和其他中缀运算符的关系


struct Coordinate2D{
    var x  = 0.0, y = 0.0
}

infix operator +-: AdditionPrecedence
extension Coordinate2D {
    static func +- (left: Coordinate2D,right: Coordinate2D) ->Coordinate2D{
        return Coordinate2D(x:left.x + right.x,y: left.y - right.y)
    }
}

infix operator *^: MultiplicationPrecedence
//自定义优先级组
precedencegroup MyPrecedence {
//    higherThan:AdditionPrecedence  优先级比加法运算高
    lowerThan: AdditionPrecedence  // 优先级, 比加法运算低
    associativity: left  // 结合方向:left, right or none
    assignment:false   // true=赋值运算符,false=非赋值运算符
    
}

extension Coordinate2D {
    static func *^ (left: Coordinate2D,right: Coordinate2D) -> Coordinate2D {
        return Coordinate2D(x: left.x * right.x,y: left.y * left.y + right.y * right.y)
    }
}
let firsCoordinate = Coordinate2D(x: 1.0, y: 2.0)
let secondCoordinate = Coordinate2D(x: 3.0, y: 8.0)
let plusMinusCoordinate = firsCoordinate +- secondCoordinate
let thirdCoordinate = Coordinate2D(x: 2.0, y: 2.0)
let coordinate = firsCoordinate +- secondCoordinate *^ thirdCoordinate
print(coordinate.x)
print(coordinate.y)

infix operator如下图:

4291716545.png

苹果官方文档:https://developer.apple.com/documentation/swift/swift_standard_library/operator_declarations

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值