1. 程式人生 > >Swift3.0-基本運算符

Swift3.0-基本運算符

swift tab string 溢出 不能 沒有 default 附加 但是

一、簡介

  運算符是檢查、改變、合並值的特殊符號或者短語。在本篇文章中只介紹基本運算符,Swift中包含的高級運算符(比如溢出運算符)不在其中。Swift中的運算符和OC中的運算法還是有比較大的區別的,Swift語言這樣做的目的是減少常規編碼錯誤。

二、術語

運算符分為一元、二元和三元運算符。

一元運算符分為前置運算符和後置運算符。

受運算符影響的值叫操作數,在表達式1 + 2中,加號(+)是二元運算符,它的兩個操作數是值1和值2。

三、Swift和OC的對比

Swift OC 附加說明
= = Swift與OC不同,Swift的賦值操作不返回任何值
+、-、*、/、-=、+= +、-、*、/、-=、+= Swift中的+可以拼接String
==、!=、>、<、>=、<= ==、!=、>、<、>=、<= 比較運算符可以作用於Swift中的元組
問題 ? 答案1 : 答案2 問題 ? 答案1 : 答案2 特殊情況下的三目運算符可以用空合運算符簡化
?? Swift中的空合運算符是為optional類型所產生的
a...b、a..<b OC中並沒有對應的區間運算符
!、&&、|| !、&&、|| 與OC使用一致

四、Swift基本運算符的介紹

1、賦值運算符(=)

·這裏只需要註意的是Swift與C語言和OC不同,Swift的賦值運算符操作並不返回任何值。

說明:這個特性使得你無法把(==)錯寫成(=),由於if x = y是錯誤代碼,Swift能幫你避免此類錯誤的發生。

2、算術運算符(+)

·Swift中所有的數值類型都支持基本的四則算術運算符:加法(+)、減法(-)、乘法(*)、除法(/)

·Swift中的加法運算符還可以用於String的拼接,OC中沒有這個特性

·Swift默認情況下不允許在數值運算中出現溢出情況(當然在高級運算符中有溢出運算符來實現溢出運算)。但是OC中是沒有這個檢查的

3、求余運算符(%)

·求余運算和取模運算是不一樣的結果。嚴格的定義請根據數學上的定義區分

例如計算:-7 Mod 4

那麽:a = -7;b = 4;

第一步:求整數商c,如果進行求模運算c = -2(向負無窮方向舍入),求余c = -1(向0方向舍入)

第二步:因為c的值不同,求模時r = 1,求余時r = -3

·為了比較好記憶求余運算的方式,使用a = (b * 倍數) + 余數,當b的最大多少倍剛好能夠容入a時,此時的余數就是求余運算的結果

9 % 4

//9 = (4 * 倍數)+ 余數,當倍數等於2時,8剛好容入9,此時余數為1

-9 % 4

//-9 = (4 * 倍數) +余數,當倍數等於-2時,-8剛好容入-9,此時余數為-1

9 % -4

//9 = (-4 *倍數)+余數,當倍數等於-2時,8剛好容入9,此時余數為1

4、一元負號運算符(-)

·一元運算符與操作數之間不要有空格

5、一元正號運算符(+)

·一元運算符與操作數之間不要有空格

6、組合賦值運算符(+=、-=)

·先後完成兩個運算任務

7、比較運算符(==、!=、>、<、>=、<=)

·因為Swift中增加了元組數據類型,元組也可以使用比較運算符,采用的是從左到右依次比較,當左邊的比較相等才進行右邊的比較,以此類推。但是Swift標準庫只能比較7個以內元素的元組比較函數。如果元組元素超過7個時,需要自己實現比較運算符。

·Int和String等類型可以比較,Bool類型不能比較。

8、三目運算符(問題 ? 答案1 : 答案2)

·跟OC中的使用一致

9、空合運算符(??)

·空合運算符是根據Swift中出現的可選類型而出現的在特殊情況下對三目運算符的一種簡寫。

·空合運算符(a ?? b)將對可選類型進行空判斷,如果a包含一個值就進行解封,否則就返回一個默認值b。表達式a必須是Optional類型。默認值b的類型必須要和a存儲值的類型保存一致。

let defaultColorName = "red"

var userDefinedColorName: String?

var colorNameToUse = a != nil ? userDefinedColorName : defaultColorName

等價於

var colorNameToUse = userDefinedColorName ?? defaultColorName

10、區間運算符(a...b、a..<b)

·閉區間運算符(a...b)定義一個包含從a到b(包括a和b)的所有值的區間。

·半開區間運算符(a..<b)定義一個從a到b但不包括b的區間。

·使用場景經常在for in循環中出現

let names = ["Anna", "Alex", "Brain", "Jack"]

let count = names.count

for i in 0..<count {

  //

}

11、邏輯運算符(!、&&、||)

·邏輯非 、邏輯與、邏輯或,三個邏輯運算符跟OC中的使用保持一致

·不管是Swift還是OC,邏輯操作符&&和||都是在左結合的,這意味著擁有多元邏輯操作符的符合表達式優先計算最左邊的子表達式。當然,對於復雜表達式,使用括號來明確優先級更加容易讀懂。

Swift3.0-基本運算符