# Swift 元組(Tuples)介紹
## 元組的定義
元組是Objective-C中沒有的數據類型,與數組類似,都是表示一組數據的集合,但與數組不同,它的特點是:
* 元組的長度任意
* 元組中的數據可以是不同的數據類型
元組的定義很簡單,用小括號括起來,然后以逗號隔開就可以了,如:
` var?userInfo?=?("Bannings"?,true,?22)??`
## 讀取元組中的數據
這樣就創建了一個元組,而想要獲取其中的值,則有多種方法,可以直接通過索引來取:
~~~
userInfo.0??//Bannings??
userInfo.1??//true??
userInfo.2??//22??
~~~
但是這樣并不方便,也不直觀,那么可以用下面這種方式來訪問:
~~~
let?(name,?isMale,?age)?=?userInfo??
name????//Bannings??
isMale??//true??
age?????//22??
~~~
把已知的userInfo賦給一個全是變量名組成的新的元組,那么就能以變量名去訪問元組中的數據了。
還有另外一種方法也能以變量名的方式去訪問元組中的數據,那就是在元組初始化的時候就給它一個變量名:
~~~
let?userInfo?=?(name:"Bannings"?,isMale:true,?age:22)??
userInfo.name???????//Bannings??
userInfo.isMale?????//true??
userInfo.age????????//22??
~~~
## 跳過不關心的值
除此之外,元組還支持“跳過”某些你并不關心的值,只需要用下劃線(_)去忽略它們就行了:
~~~
let?(name,??_,?age)?=?userInfo??
name????//Bannings??
//isMale??這個就不能訪問了??
age?????//22??
~~~
或者是在該元組初始化的時候不給它指定變量名:
~~~
let?userInfo?=?(name:"Bannings"?,true,?age:22)??
userInfo.name???????//Bannings??
//userInfo.isMale?????這個就不能訪問了??
userInfo.age????????//22??
~~~
## 可變元組和不可變元組
用var定義的元組就是可變元組,let定義的就是不可變元組。不管是可變還是不可變元組,元組在創建后就不能對其長度進行增加和刪除之類的修改,只有可變元組能在創建之后修改元組中的數據:
~~~
var?userInfo?=?(name:"Bannings"?,true,?age:22)"white-space:pre">????//定義可變元組??
userInfo.name?=?"newName"??
userInfo.name???//newName??
??
let?userInfo1?=?(name:"Bannings"?,true,?age:22)"white-space:pre">???//定義不可變元組??
userInfo1.name?=?"newName"??//報錯,不可修改??
~~~
需要注意的是,可變元組雖然可以修改數據,但卻不能改變其數據的數據類型:
~~~
var?userInfo?=?(name:"Bannings"?,true,?age:22)??
userInfo.name?=?1???//報錯??
~~~
- 前言
- iOS 自定義頁面的切換動畫與交互動畫 By Swift
- Swift 元組(Tuples)介紹
- Swift 可選值(Optional Values)介紹
- Swift Switch介紹
- Swift 值類型和引用類型
- Swift 柯里化(Currying)
- iOS GCD使用指南
- iOS8 Core Image In Swift:自動改善圖像以及內置濾鏡的使用
- 讓Xcode自動更新Build版本
- Swift 全功能的繪圖板開發
- Swift Nullability and Objective-C
- Swift Core Data 圖片存儲與讀取Demo
- Swift 繪圖板功能完善以及終極優化
- 如何設計一個 iOS 控件?(iOS 控件完全解析)