類型別名
類型別名(type aliases)就是給現(xiàn)有類型定義另一個名字。你可以使用 typealias 關(guān)鍵字來定義類型別名。
typealias AudioSample = UInt16
定義了之后,可以使用這個別名來代替之前的
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound 現(xiàn)在是 0(本例中, AudioSample 被定義為 UInt16 的一個別名。因為它是別名, AudioSample.min 實際上是 UInt16.mi ,所以會給 賦一個初值 。)
BOOL(布爾值)
Swift 有一個基本的布爾(Boolean)類型,叫做 Bool 。布爾值指邏輯上的(logical,因為它們只能是真或者 假。不再有YES或者NO這兩個,會報錯,而且也敲不出來了。Swift 有兩個布爾常量, true 和 false :
let orangesAreOrange = true let turnipsAreDelicious = false
orangesAreOrange 和 turnipsAreDelicious 的類型會被推斷為 Bool ,因為它們的初值是布爾字面量。就像之 前提到的 Int 和 Double 一樣,如果你創(chuàng)建變量的時候給它們賦值 true 或者 false ,那你不需要將常量或者變量 聲明為 Bool 類型。初始化常量或者變量的時候如果所賦的值類型已知,就可以觸發(fā)類型推斷,這讓 Swift 代碼 更加簡潔并且可讀性更高。
當你編寫條件語句比如 if 語句的時候,布爾值非常有用:
if turnipsAreDelicious { print("Mmm, tasty turnips!")
} else {print("Eww, turnips are horrible.")
}// 輸出 "Eww, turnips are horrible."
條件語句,例如 if ,請參考控制流。
如果你在需要使用 Bool 類型的地方使用了非布爾值,Swift 的類型安全機制會報錯。下面的例子會報告一個編譯 時錯誤:
let i = 1 if i {
// 這個例子不會通過編譯,會報錯 }
然而,下面的例子是合法的:
let i = 1 if i == 1 {
// 這個例子會編譯成功
}
i == 1的比較結(jié)果是BOOL 類型,所以第二個例子可以通過類型檢查。類似 這樣的比較,請參考基本操作 符。
元祖
元組(tuples)把多個值組合成一個復合值。元組內(nèi)的值可以是任意類型,并不要求是相同類型。
let http404Error = (404, "Not Found")// http404Error 的類型是 (Int, String),值是 (404, "Not Found")
(404, "Not Found") 元組把一個 Int 值和一個 String 值組合起來表示 HTTP 狀態(tài)碼的兩個部分:一個數(shù)字和一 個人類可讀的描述。這個元組可以被描述為“一個類型為 (Int, String) 的元組”。
你可以將一個元組的內(nèi)容分解(decompose)成單獨的常量和變量,然后你就可以正常使用它們了:
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")// 輸出 "The status code is 404"
print("The status message is \(statusMessage)") // 輸出 "The status message is Not Found"
如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線( _ )標記:
(Int, I
let (justTheStatusCode, _) = http404Error print("The status code is \(justTheStatusCode)") // 輸出 "The status code is 404”
而且你還可以像訪問數(shù)組那樣取得第零個位置以及其他位置的值是神馬(下標是從0開始的哦)
print("The status code is \(http404Error.0)")// 輸出 "The status code is 404"print("The status message is \(http404Error.1)") // 輸出 "The status message is Not Found"
當然了你還可以在定義元祖的時候給單個元素進行命名:
let http200Status = (statusCode: 200, description: "OK")
給元組中的元素命名后,你可以通過名字來獲取這些元素的值:
print("The status code is \(http200Status.statusCode)")
// 輸出 "The status code is 200"
print("The status message is \(http200Status.description)") // 輸出 "The status message is OK"