Swift 4.0 高階-自定義操作符
阿新 • • 發佈:2019-01-29
在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