## Swift 基礎類型之元組
元組(`tuples`)把多個值組合成一個復合值。
* **元組內的值可以是任意類型**
* **并不強制要求是相同類型**。
### 元組的聲明
```
// 記錄一個點的坐標位置
var point = ( 2 , 1 )
// 記錄Http的相應頭信息
let http404Error = ( httpStatus: 404 , httpMessage: "The Page Not Found!" )
```
### 顯式的指定元組的數據類型
在聲明元組時,可以定義好分量的名稱和數據類型,方便后期解包使用分量名稱對數據的獲取。
```
var point2:( Int , Int , Int ) = ( 10 , 20 , 30 )
let httpResponse:( httpStatus: Int , httpMessage: String ) = ( 200 , "OK" )
```
### 元組的解包
將一個元組的內容分解( `decompose` )成單獨的常量和變量。
```
var point = ( 2 , 1 )
let ( x , y ) = point // 分別得到 x 的值為 2 , y 的值為 1 .
let httpResponse:( httpStatus: Int , httpMessage: String ) = ( 200 , "OK" )
var ( statusCode , statusMessage ) = httpResponse // 分別得到 statusCode 的值為 200 , statusMessage 的值為 OK
```
也可以使用如下的方式使用 `point` 分量,但這種方式獲取不直觀。如下:
```
point.0
point.1
```
### 獲取元組中部分單元的值
對于元組中我們不關心的值,使用 `_` 跳過不關心的值。
```
let loginResult: ( isLoginSuccess: Bool , userName: String , loginTime: Int ) = ( true , "curder" , 1481101192 )
let ( _ , userName , _ ) = loginResult // 常量 userName 的值為 `curder`
```
### 可變元組和不可變元組
使用 `let` 聲明的元組是**不可變元組**,使用 `var` 聲明的元組是**可變元組**。
```
var userInfo = (name: "Stive", true, age: 22)
let user = (name: "Stive" , true , age: 50)
userInfo.name = "Stive Jobs" // 修改成功
user.name = "Stive Jobs" // 無法修改 error: cannot assign to property: 'user' is a 'let' constant
```
需要注意的是,可變元組雖然**可以修改數據**,**但卻不能改變其數據的數據類型**:
```
var userInfo = (name: "Stive", true, age: 22)
userInfo.name = 22 // 修改了數據類型報錯 error: cannot assign value of type 'Int' to type 'String'
```
- 學習筆記
- 基礎
- 基本類型之整型
- 基本類型之浮點型
- 基本類型之布爾類型以及簡單的 if 語句
- 基礎類型之元組
- 基本類型之其他
- 運算符
- 基礎運算符
- 比較運算符、邏輯運算符
- 三元運算符
- 范圍運算符for-in
- 邏輯控制
- 循環結構
- 選擇結構
- 字符串
- Character和Unicode
- String.index 和 range
- 可選型
- 容器類
- 數組初始化
- 數組基本操作
- 字典初始化
- 字典基本操作
- 集合初始化
- 集合基本操作
- 函數
- 閉包
- 枚舉
- 結構體
- 類
- 文檔注釋
- 屬性和方法
- 下標和運算符重載
- 拓展和泛型
- 協議
- 其他
- Swift 3.0 For 循環
- Swift 隨機數的生成
- IOS開發玩轉界面 UIKit
- UILable 文本顯示控件
- UIButton 簡單的交互控件
- UIImageView 圖片控件
- UISearchBar 搜索控件