swift 定義自定義運算符

###swift自定義運算符 有時候咱們須要定義一個新的運算符來處理咱們的數據操做,好比咱們須要計算2個Int的差與和的乘積,如:swift

// 輸入  二、3      輸出 (2+3)*(2-3)
// 咱們能夠定義一個新的運算符
func +*- (num1:Int, num2:Int) ->Int {
    return (num1+num2)*(num1-num2)
}
//

這個時候編譯器會報錯,可是你可能會問,爲何咱們寫下面這樣的代碼就不會報錯呢?code

func + (num1:Int, num2:Int) ->Int {
    //
}

這是由於swift已經爲咱們定義了 +, -, *, / 等運算符,咱們能夠直接重載,而這個新的運算符須要咱們本身定義,那麼如何定義呢?直接上代碼:ci

infix operator +*- {
    associativity none
    precedence 160
}
  • infix 表示要定義一箇中位操做符,既先後都是輸入
  • associativity 定義告終合律,即若是多個同類的操做運算符順序出現,會按照怎樣的計算順序。如+, -, 都是定義的left
  • precedence 運算符的優先級,數值越高優先級越高,swift中+, -,的優先級是140,, /的優先級是150,也就是說咱們定義的 +-的優先級比較高

這樣,咱們就能夠進行咱們的運算了編譯器

let result = 2 +*- 3
// 輸出 -5

PS:swift的運算符是不能定義在局部的,你至少但願你的全局均可以使用這個運算符,不然自定義就沒什麼意義了!!

相關文章
相關標籤/搜索