自定义操作符

2019-09-25  本文已影响0人  秋分落叶

在Swift语言中,常见的操作符有+、-、*、/、>、<、==、&&、||等等,如果不喜欢,你也可以定义自己喜欢的操作符。

操作符类型

中置运算符(infix operator) e.g. +、-、/、*
前置运算符(prefix operator) e.g. --、++
后置运算符(postfix operator) e.g. --、++
注意:在Swift初期(1.0,2.0)--和++这些前(后)置运算符还是可以使用的,但是会有警告;但在Swift4.0已经不能使用了(编译无法通过),不过我们自己定义的前(后)置运算符是可以使用的。
自定义操作符

1.中置运算符
示例

/// 定义优先级组
precedencegroup MyPrecedence {

    // higherThan: AdditionPrecedence   // 优先级,比加法运算高
    lowerThan: AdditionPrecedence       // 优先级, 比加法运算低
    associativity: none                 // 结合方向:left, right or none
    assignment: false                   // true=赋值运算符,false=非赋值运算符
}
infix operator +++: MyPrecedence        // 继承 MyPrecedence 优先级组
// infix operator +++: AdditionPrecedence // 也可以直接继承加法优先级组(AdditionPrecedence)或其他优先级组
func +++(left: Int, right: Int) -> Int {

    return left+right*2
}

使用

let result = 2+++3
print(result) // 8

2.前置运算符
定义前置运算符是不继承优先级组
示例

prefix operator ==+
prefix func ==+(left: Int) -> Int {

    return left*2
}

使用

print(==+2) // 4

3.后置运算符
定义后置运算符是不继承优先级组
示例

postfix operator +==
postfix func +==(right: Int) -> Int {

    return right*3
}

使用

print(2+==) // 6
上一篇 下一篇

猜你喜欢

热点阅读