Swift語言指南(八)--語言基礎之元組

來源:互聯網
上載者:User

 

元組

元組(Tuples)將多個值組合為一個複合值。元組內的值可以是任何類型,各個元素不需要為相同類型(各個元素之間類型獨立,互不干擾--Joe.Huang)。

下例中,(404, "Not Found") 是一個描述HTTP狀態代碼的元組。HTTP狀態代碼是當你向WEB伺服器請求頁面時伺服器返回的一個特殊值,如果你(向WEB伺服器)請求了一個不存在的網頁,返回的狀態代碼就是 404 Not Found :

1 let http404Error = (404, "Not Found")2 // http404Error is of type (Int, String), and equals (404, "Not Found")3 // http404錯誤的類型為(整型,字串類型),它的值是(404,"Not Found")

(404, "Not Found") 元組將一個 Int 值與一個 String 值組合起來,表示 HTTP 狀態代碼的兩個值:一個數字和一個人們可讀取的(文字性)描述。它可以這樣理解:“一個類型為 (Int, String) 的元組”。

你可以將類型任意排列來建立元組,也可以隨心所欲地讓元組包含多種不同類型。只要你願意,建立類型為 (Int, Int, Int) 或 (String, Bool) 的元組也不會有問題,當然,根據你的需要,其它相片順序也是可以的。

元組的內容可以分解(decompose)還原並賦值給單獨的常量或變數,然後便可照常訪問:

1 let (statusCode, statusMessage) = http404Error2 println("The status code is \(statusCode)")3 // prints "The status code is 404" //輸出“狀態代碼為 404”4 println("The status message is \(statusMessage)")5 // prints "The status message is Not Found //輸出"狀態資訊 Not Found"

如果你只需要元組的某一部分值,可以在分解元組時用底線(_)標識來忽略掉其他部分:

1 let (justTheStatusCode, _) = http404Error2 println("The status code is \(justTheStatusCode)")3 // prints "The status code is 404 //輸出“狀態代碼為 404”

或者,通過以 0 開頭的元組索引訪問元組的各個元素值:

1 println("The status code is \(http404Error.0)")2 // prints "The status code is 404" //輸出“狀態代碼為 404”3 println("The status message is \(http404Error.1)")4 // prints "The status message is Not Found //輸出“狀態代碼為 Not Found”
5 //這種方式類似於數組通過下標索引訪問數組各個元素的值--Joe.Huang

還可以在定義元組時為元組的各個元素單獨命名:

1 let http200Status = (statusCode: 200, description: "OK")

為元組各元素命名後,便可以通過元素名稱來訪問各個元素的值了:

1 println("The status code is \(http200Status.statusCode)")2 // prints "The status code is 200" //輸出“狀態代碼為 404”3 println("The status message is \(http200Status.description)")4 // prints "The status message is OK //輸出“狀態資訊 OK”

元組在作為函數傳回值時非常有用。一個擷取網頁內容的函數可能會通過返回一個 (Int, String) 的元群組類型來描述網頁載入是成功還是失敗。函數會返回兩個類型完全不同的值來描述返回的狀態或結果,(這種返回方式)所能提供的資訊比只能返回固定類型的單個值要有用得多。詳情請參見 多個傳回值的函數(後面章節會譯到)。

註:

元組對於多個關聯值的臨時組合是很有用的。但它們並不適用於建立複雜的資料結構,如果你的資料結構的生命週期超過臨時使用的範疇(不是臨時使用的值,就應該通過類或建模緩衝起來--Joe.Huang),請將它作為類或結構建模,而不是以元組儲存。詳情請見 類與結構(後面章節會譯到)。

 

謝謝,Swifter-QQ群:362232993,同好者進~ 

Fork:https://github.com/Joejo/Swift-lesson-for-chinese

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.