1. 程式人生 > >Swift中的元組tuple的用法

Swift中的元組tuple的用法

用途

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)