Swift中的元組tuple的用法
阿新 • • 發佈:2018-11-15
用途
tuple用於傳遞複合型別的資料,介於基礎型別和類之間,複雜的資料通過類(或結構)儲存,稍簡單的通過元組。
元組是使用非常便利的利器,有必要整理一篇博文。
定義
使用括號(), 括號內以逗號分割各種型別的資料, 形式如
(Int, String)
或 (String, Int, String......)
如:
userZhangsan = ("Zhangsan", "張三", "越秀區清水濠小學", 9, "三年級", true)
//讀取元組中的元素,如: userZhangsan[0] //"Zhangsan" userZhangsan[1] //"張三" userZhangsan[2] //"越秀區清水濠小學" userZhangsan[3] //9 userZhangsan[4] //"三年級"
變數命名定義
還有另外一種方法也能以變數名的方式去訪問元組中的資料,那就是在元組初始化的時候就給它一個變數名:
let userInfo = (name:"Zhangsan" ,isMale:true, age:22) userInfo.name //Zhangsan userInfo.isMale //true userInfo.age //22
分解和變數轉換
對於
let http404Error = (404, "Not Found")
你可以將一個元組的內容分解(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"
忽略部分值
如果你只需要一部分元組值,分解的時候可以把要忽略的部分用下劃線(_)標記:
let (justTheStatusCode, _) = http404Error print("The status code is \(justTheStatusCode)") // 輸出 "The status code is 404"
多值賦值
//一般我們的變數賦值這麼幹: var a = 1 var b = 2 var c = 3
//現在可以用一行替代: var (a, b, c) = (1, 2, 3) //變數交換就是這麼簡單: (a, b) = (b, a)
可變元組和不可變元組
用var定義的元組就是可變元組,let定義的就是不可變元組。不管是可變還是不可變元組,元組在建立後就不能對其長度進行增加和刪除之類的修改,只有可變元組能在建立之後修改元組中的資料:
var userInfo = (name:"Bannings" ,true, age:22) //定義可變元組 userInfo.name = "newName" userInfo.name //newName let userInfo1 = (name:"Bannings" ,true, age:22) //定義不可變元組 userInfo1.name = "newName" //報錯,不可修改
作為函式返回值
func divmod(_ a: Int, _ b:Int) -> (Int, Int) { return (a / b, a % b) } divmod(7, 3) // (2, 1) divmod(5, 2) // (2, 1) divmod(12, 4) // (3, 0) //或者使用命名的版本: func divmod(_ a: Int, _ b:Int) -> (quotient: Int, remainder: Int) { return (a / b, a % b) } divmod(7, 3) // (quotient: 2, remainder:1) divmod(5, 2) // (quotient: 2, remainder:1) divmod(12, 4) // (quotient: 3, remainder:0)