標籤:
元組就是一個把多個值組成一個單一合成的複合實值型別。一個元組內部的各個值可是任何類型,並且每個值的類型可以彼此不同。
比如這個例子,(404,"Not Found")是一個用來描述Http狀態的元組。一個HTTP狀態編碼是當你請求一個web頁面時,web服務返回的一個特定的值。404 Not Found 是當你請一個頁面時,而這個頁面不存在時返回的一種狀態編碼。
let http404Error = (404,"Not Found")
// http404Error 的類型為(Int,String)的元組,值為(404,"Not Found")
元組(404,"Not Found")整合了一個Int的字數和一個可讀String的字串兩個值來說明HTTP狀態編碼。它可這樣來說”一個類型為(Int,String)的元組"。
你可以通過任何類型組合來建立一個元組,元組可以包含你想要的不同的類型。元組(Int,Int,Int)或元組(String,Bool)都沒有任何問題錯誤,或者把你所需要的任何類型組合在一起。
當你經常訪問一個元組時你可以把一個元組分解到一個可分開的常量或變數中:
let (statusCode,statusMessage) = http404Error
println("The Status code is \(statusCode)") // 列印出 "The Status code is 404"
println("The status message \(statusMessage)") // 列印出"The status message Not Found"
如果你只是需要元組的一些值時,你可以在分解元組時通過底線來忽略元組中你不需要的部分:
let (justTheStatusCode,_) = http404Error
println("The status code is \(justStatusCode)") // 只能訪問justTheStatusCode
或者,通過一個索引來訪問一個元組中一個單獨的值,這個索引從0開始:
println("The status code is \(http404Error.0)") // 列印出 "The Status code is 404"
println("The status message \(http404Error.1)") // 列印出"The status message Not Found"
當元組被定義時為每個節點定義一個名字後,你也可通過名字來擷取一個指定名字的值:
let http200Status = (statusCode: 200, description: "OK")
println("The status code is \(http200Status.statusCode)") //列印出 "The status code is 200"
println("The status message \(http200Status.description)") // 列印出"The status message is OK"
元組經常用於一個函數的傳回值。一個函數需要返回一個web頁面的狀態可以一個元組(Int,String)的來描述頁面傳回值是成功或者失敗。通過包含兩個類型不同且值不同的元組作為函數的傳回值比只使用一個單一類型的值作為使函數的傳回值時能提供更多用有的資訊。更我資訊請參照"Siwft之傳回值為元組的函數"小節
注意:元組經常用於需要臨時聯絡在一起的值。他不適合建立一些複雜的資料結構。如果你的資料結構生命週期超過臨時範圍,已遲早的使用類或者結構這類的資料結構。
Swift之元組