元组(Tuple)
元组是Swift中新添加的数据类型,与数组相似,都表示一组数据的集合,但和数组稍微有点不同
- 数据类型
- 元组中元素的数据类型可以是不相同的
- 数组中的元素的数据类型必须是相同的
定义
小括号括起来,逗号隔开……
var myTuple = ("zhangsan", false, 34)
读取元组中的数据
- 在初始化元组的时候给对应位置变量一个变量名
let myTuple = (name:"zhangsan", isMan:false, age:34)
myTuple.name //zhangsan
myTuple.isMan //false
myTuple.age //34
- 直接通过索引来读取
var name = myTuple.0 //zhangsan
var flag = myTuple.1 //false
var age = myTuple.2 // 34
- 间接读取:把myTuple付给一个全是变量名组成的新的元组,直接通过变量名去访问元组中的数据。
let (name, isMan, age) = myTuple
name // zhangsan
isMan // false
age // 34
跳过不关心的值
- 用下划线忽略你不关心的值
let(name, _, age) = myTuple
name //zhangsan
age //34
// isMan已经不能在访问
- 在元组初始化的时候不给指定变量名:
let myTuple = (name:”zhangsan”, false, age:34)
可变和不可变的元组
元组的创建可以用var和let, 其中var创建的元组就是可变元组,let定义的就是不可变元组。但是不管是var创建的元组还是let创建的元组,在创建够后就不能对它的长度进行修改。可变元组在创建后可以修改元组中的数据.
Addtion
我们可以使用元组在同一个switch语句中测试多个值,元组中的元素可以使值,也可以是区间。其中下划线”_”可以用来匹配所有可能的值。
let point = (1, 0)
switch point{
case (0, 0):
print("0, 0 is at the origin")
case (_, 0):
print("\(point.0), 0 is at the origin")
case (0, _):
print("0, \(point.1) is at the origin")
case (-2...2, -2...2):
print("\(point.0), \(point.1) is inside the origin")
default:
print("\(point.0), \(point.1) is outside the origin")
}