swift簡單總結(八)—— 別名、布爾值與元組

版本記錄

版本號 時間
V1.0 2017.07.22

前言

我是swift2.0的時候開始接觸的,記得那時候還不是很穩定,公司的項目也都是用oc做的,并不對swift很重視,我自己學了一段時間,到現在swift3.0+已經出來了,自己平時也不寫,忘記的也差不多了,正好項目這段時間已經上線了,不是很忙,我就可以每天總結一點了,希望對自己對大家有所幫助。在總結的時候我會對比oc進行說明,有代碼的我會給出相關比對代碼。
1. swift簡單總結(一)—— 數據簡單值和類型轉換
2. swift簡單總結(二)—— 簡單值和控制流
3. swift簡單總結(三)—— 循環控制和函數
4. swift簡單總結(四)—— 函數和類
5. swift簡單總結(五)—— 枚舉和結構體
6. swift簡單總結(六)—— 協議擴展與泛型
7. swift簡單總結(七)—— 數據類型

類型別名

swift中也有別名,oc中也有,就是給指定類型重新命名,然后在使用該指定類型的地方,就可以使用別名替代了。

下面我們先看一下oc中的別名。

typedef CGFLOAT_TYPE CGFloat;

這里以后CGFLOAT_TYPE就用CGFloat代表浮點類型。

下面我們看一下swift中的別名。

//別名
typealias numberInt = UInt16
let min = numberInt.min
let max = numberInt.max
print(min)
print(max)

下面看輸出結果

0
65535

這里numberInt就相當于UInt16


布爾值

swift有一個基本的Boolean類型,叫做Bool,布爾值指邏輯上的logical,因為它們只能是真或者假,swift中有兩個布爾常量,分別是truefalse

下面我們看一下swift中的代碼。

//bool值
let isOrange = true

if isOrange {
    print("yes")
}
else {
    print("no")
}

下面看輸出結果

yes

但是如果要像下面這么寫就是不可以的。

//bool值
let isOrange = 1
        
if isOrange {
    print("yes")
}
else {
    print("no")
}

上面的就會報錯,但是對于oc中就可以if后面接任意值和對象,包括整型或者對象。而且oc中的BOOL類型是YESNO


元組

??元組tuples就是把多個值組合成一個復合值,元組內的值可以是任意類型,并不要求是相同類型。這個是oc中沒有的定義。例如(404, "Not Found")就是一個元組。

//這個元祖的類型就是(Int ,String),值是(404, "Not Found")
let http404Error = (404, "Not Found")

上面的元組可以描述為:一個類型為(Int ,String)的元組。

??可以把任意順序的類型組合成一個元組,這個元組可以包含所有類型,只要你想,你可以創建一個類型為(Int, Int, Int)或者(String, Bool)或者其他任何你想要的組合元組。

你可以將一個元組的內容分解decompose成單獨的常量和變量,然后就可以正常使用了,下面看代碼。

//tuple元組
let http404Error = (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
print("The status message is \(statusMessage)")

下面看輸出結果

The status code is 404
The status message is Not Found

如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線_標記,看下邊的代碼。

let http404Error = (404, "Not Found")
let (statusCode, _) = http404Error
print("The status code is \(statusCode)")


下面我們看輸出結果。

The status code is 404

還可以通過下標來訪問元組中的單個元素,下標從0開始。

let http404Error = (404, "Not Found")
let (statusCode, statusMessage) = http404Error
print("The status code is \(http404Error.0)")
print("The status message is \(http404Error.1)")

下面看輸出結果

The status code is 404
The status message is Not Found

也可以在定義元組的時候給單個元素命名。

let http200Status = (statusCode : 200, statusMessage : "OK")

給元組中的元素命名后,你可以通過名字來獲取這些元素的值。

let http200Status = (statusCode : 200, statusMessage : "OK")
print("The status code is \(http200Status.statusCode)")
print("The status message is \(http200Status.statusMessage)")

下面看輸出結果

The status code is 200
The status message is OK

??作為函數返回值時,元組就非常有用了,一個用來獲取網頁函數可能會返回一個(Int, String)元組類描述是否獲取成功,和只能返回一個類型的值比起來,一個包含兩個不同類型值的元組可以讓函數的返回信息更有用。

注意:元組在臨時組織值的時候很有用,但是并不適合創建復雜的數據結構,如果你的數據結構并不是臨時使用,一般使用類或者結構體,而不是元組。

后記

未完,待續~~~

山水畫
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容