Swift 4.0 高级:自定义操作符

Swfit4.0 学习 2018-04-19 已阅 406 次

在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

本文由 Harvey 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论