## 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 搜索控件