博客> Swift 4.0 高级-自定义操作符
Swift 4.0 高级-自定义操作符
2018-11-09 03:01 评论:0 阅读:90 yao7778899
swift4.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

Precedence Group Apple官方链接[Table 3 Infix operators]

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
收藏
0
sina weixin mail 回到顶部