5.元组类型
在swift语言中,元组是多个值组成的复合值类型,便于管理和计算。元组类型由N个任意类型的数据组成(N >= 0),组成元组类型的数据可以称为“元素”。
现在我们来定义一个用来表示时间的元组time。它包括年(year)、月(month)、日(day)。示例代码如下:
1 | let time1 = (2016,5,4) 2 | let time2 = (year:2016,month:5,day:4) |
例子中,第1行代码定义了一个名文time1的元组。用来表示年月日。第2行代码定义了名为time2的元组。同样是表示年月日。但这两种写法是有区别的,第1行代码定义的time1元组,可读性不是很强,直接看到(2016,5,4)大家未必能猜测出是表示年月日。但是第2行代码定义的time2元组,通过(year:2016,month:5,day:4),我们可以很直观的知道2016是表示年,month是表示月,day是表示天。这样表示代码的可读性会更好,建议大家使用这种表示方法来定义一个元组。
如果想访问元组中的数据,我们可以使用下标方式来访问元组中的值,如0,1…以此类推,也可以通过元素名来访问元组的值。这里我们以元组time1和time2为例:
1 | let time1 = (2016,5,4) 2 | print("\(time1.0)年\(time1.1)月\(time1.2)日") 3 | let time2 = (year:2016,month:5,day:4) 4 | print("\(time2.0)年 \(time2.1)月, \(time2.2)日") 5 | print("\(time2.year)年\(time2.month)月\(time2.day)日") |
运行结果:
2016年5月4日
2016年5月4日
2016年5月4日
例子中,第1行代码我们定义了time1元组,第2行代码通过下标方式访问元组中的值,如time1.0表示访问元组的第一个值。第3行代码我们定义了time2元组,第4行代码同样是采用下标方式访问元组中的每一个元素。第5行代码通过元组的元素名访问元组的值,如time2.year访问元组的第一个值。
此外我们也可以把一个元组的内容分解成单独的常量和变量。我们仍以time2这个元组为例:
1 | let (year,month,day) = time2 2 | print("\(year)年\(month)月\(day)日") |
运行结果同上例。
如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记。示例如下:
1 | let (year,month,_) = time2 2 | print("\(year)年\(month)月: ") |
输出结果:2016年5月