1. 程式人生 > >Swift 4.0 高階-自定義操作符

Swift 4.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