《iOS移動開發從入門到精通》圖書連載12:元組型別、一元、二元和三元運算子、 比較運算子
3.2.5 元組型別
元組是一個包含了若干個相關聯變數的物件。
1 let people = ("John",33)
由於Swift的型別推導,people被推導為(String, Int)型別的常量。
元組作為一個臨時複合值,元組在某些時候是非常有用的。它經常被用作函式返回值,用來傳遞一些資料。
例如一個用來獲取網頁的函式,可能會返回一個(Int, String)元組,用來描述是否獲取成功。和只能返回一個型別的值比較起來,一個包含兩個不同型別值的元組,可以讓函式的返回資訊更加有用:
1 let http404Error = (404,"Not Found") 2 let http200Status =(statusCode:200, description:"OK")
從一個元組中單獨取出某一個數據,有兩種方式。第一種方式是使用下標:
1 let http404Error = (404,"Not Found")
2 print("errorCode =\(http404Error.0)") // 輸出結果為:errorCode = 404
第二種方式如下:
1 let http404Error = (404,"Not Found") 2 let (errorCode, errorMessage) =http404Error 3 print("errorCode =\(http404Error.0)") // 輸出結果為:errorCode = 404
如果之前是按照鍵值對建立的元組,可以按照訪問屬性的形式來獲取相關的值:
1 let people = (name:"John",age:33)
2 print("People's name is\(people.name), and age is \(people.age).")
元組在臨時組織資料的時候很有用,但是並不適合建立複雜的資料結構。如果你的資料結構並不是臨時使用,請使用類或者結構體而不是元組。
3.2.6 一元、二元和三元運算子
運算子是一種特定的符號或表示式,用來檢驗、修改或合併變數。例如,用於求和的運算子+,可以對兩個數字進行求和,還有邏輯運算子&&等等。
運算子都是一元、二元或三元的。其中一元運算子用於處理單個物件,一元字首運算子出現在物件前,一元后綴運算子出現在物件的後面。
一元減號和加號
在一個數值的前面,新增的一個-減號,叫作一元減運算子。同樣在數值前面新增的+加號,被稱為一元加運算子,它們的用法如下:
1 let one = 1
2 let minusOne = -one //結果為:-1
3 let plusOne = +one //結果為:1
4 let anotherOne = -minusOne //結果為:1
一元邏輯非運算子
在數值的前面,新增!感嘆號運算子,可以對邏輯數值進行邏輯非運算。
1 let isHero = false
2 let playerType = !isHero //結果為:true
請注意無論是減號、加號還是感嘆號運算子,它們與右側的數值之間不能有空格。
另外++遞增和--遞減等在Swift1.0版本中出現的一元運算子,在新版的Swift語言中已經被移除,這裡就不再進行講解。
二元運算子
二元運算子是用來對兩個目標進行操作的,所以二元運算子常常出現在兩個數值之間的位置。如常用的加、減、乘、除數學運算子:
1 3 + 2 //結果為:5
2 3 - 2 //結果為:1
3 3 * 2 //結果為:6
4 3 / 2 //結果為:1
餘數運算子( x % y )可以求出多少個 y 的倍數能夠剛好放進 x中,並且返回剩下的值,也就是餘數。在Swift中您可以對正數、負數進行取餘計算:
1 5 % 2 //結果為:1
2 -5 % 2 //結果為:-1
三元條件運算子
三元運算子擁有三個部分,它看起來是這樣的:question ? answer1 :answer2。這是一種基於question是真還是假,來選擇後面兩個表示式之一的便捷寫法。如果question是真,則會返回answer1,否則返回answer2。
1 let score = 66
2 let result = (score >= 60) ?"通過考核" : "未通過考核" //結果為:通過考核
三元條件運算子提供了一個非常有效的簡寫,以根據指定的條件作出相應的選擇。
3.2.7 比較運算子
您會經常使用比較運算子,對兩個數值進行比較,從而根據比較結果,進行相應的操作。Swift支援所有C語言的標準比較運算子。每個比較運算子都會返回一個Boolean值,來表示語句是否為真:
1 2 > 1 //結果為:true
2 2 < 1 //結果為:false
3 2 >= 1 //結果為:true
4 2 <= 1 //結果為:false
5 2 == 1 //結果為:false
6 2 != 1 //結果為:true
比較運算子通常被用在if條件語句當中:
1 let workingAge = 18
2 if workingAge >= 15
3 {
4 print("享受15天年假")
5 }
擁有同樣值數量的元組也可以進行比較,前提是元組中的值是可以比較的。元組以從左到右的順序,進行值大小的比較,直到找到兩個不相等的值為止。如果兩個元組的所有值都相同,則兩個元組被認為是相等的:
1 (2, 3) > (1, 3) //結果為:true
2 ("Class1", 98) >("Class2", 54) //結果為:false
3 (7, "Sunday") == (7,"Sunday") //結果為:true