在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...