Swift 運算子操作

2021-09-22 17:07:15 字數 1506 閱讀 6393

在swift中延伸了一種和c++類似的新特性,swift的運算子提供了良好的可拓展性,我們可以對運算子進行操作,對運算子的操作其實就是對運算函式的重寫或者過載。注意運算子操作一般被操做的引數往往要加上in-out模式。

我們在實際開發中,swift可自定義運算子,並不限於預設的運算子,我們可以對+進行過載,使其完成int與double或者flaot相加。

swift提供了如下的函式,使得int與int可以相加:

func + (left:int,right:int)->int 

我們完全可以進行重構

func + (left:int,right:double)->double

經過實驗,貌似swift不支援對 = 的重構

前面我們說的+以及沒有說的-是雙目運算子,而對於單目運算子,如++,–,swift規定運算元放在單目運算子前面,這種運算子被稱為前置運算子,運算元放在單目運算子後面,這種運算子被稱為後置運算子。

重置前置運算子函式必須使用prefix關鍵字修飾,重置後置運算子必須使用postfix關鍵字修飾。

prefix  func  ++ (operator:type)->type

`前置運算子函式`

postfix func -- (operator:type)->type

`後置運算子函式`

例子:

prefix func ++ (inout array:[t])->[t] 

var strarr=["ios","android","wp"]

print(++strarr)

在c語言中提供了+=賦值運算子,實際就是把第二個值相加給第乙個值,這裡的第乙個值就需要使用in-out模式。

func += (inout left:[t],right:t)

var mylist=["ios","android"];

mylist += "wp"

print(mylist)

swift中的int、double、string等型別都支援比較運算子,但如果自己定義的型別需要比較大小,則需要為自定義型別滿足如下兩個特徵:

經過上邊的積累,我們已經掌握了運算子的操作,最後我們進行自己的運算子開發

宣告 新的運算子。

格式如下:

prefix|infix|postfix operator 運算子名{} 

prefix:代表前置運算子

infix:代表雙目運算子

postfix:代表後置運算子

為新的運算子提供多個過載的運算子函式

如果過載的運算子是前置運算子,則需要在func關鍵字新增prefix關鍵字

如果過載的運算子是後置運算子,則需要在func關鍵字新增postfix關鍵字

下面拋磚引玉的開發乙個乘方運算子:**

由於乘法應該是雙目運算子,所以首先宣告

Swift 高階運算子

高階運算子 向上溢位 向下溢位 除零溢位,0作為被除數時結果是0 模零溢位,對 0求餘結果是0 varwilloverflow uint8 max 等於 255 willoverflow willoverflow 1 等於0 willoverflow willoverflow 1 等於2 varwi...

swift 比較運算子

import foundation 比較運算子中的 比較 二字指的是兩個運算數值分量間的大小關係,與數學意義上的比較概念相同,只不過比較運算子的表示方式喲所不同。等於 a b 不等於 a b 大於 a b 小於 a b 大於等於 a b 小於等於 a b 恒等 不恒等 每乙個比較運算都會返回乙個標識...

Swift 位運算子

import foundation 位運算子通常在如影象處理和建立裝置驅動等底層開發中使用,使用它可以單獨運算元據結構中原始資料的位元位。去使用乙個定義的協議進行通訊的時候,運用位運算子來對原始資料進行編碼和解碼也是非常有效的。1.按位取反運算子 按位取反運算子 是對乙個運算元的每一位都取反 let...