元组是一个包含了若干个相关联变量的对象。
var newTuple = ("kt",20)
//由于Swift的类型推导,newTuple被推导为(String,Int)类型的变量
几个变量一旦联合在一起,组成了一个元组,他们就被“绑定”了,要想从一个元组中单独取出某一个数据时,需要解绑元组。
直接解绑是最简单的一种解绑方式,只要定义若干个变量与元组中的变量一一对应即可。
var newTuple = ("kt",20)
var (name , age) = newTuple
println("name = \(name)")
println("age = \(age)")
输出结果:
name = kt
age = 20
直接解绑使用简单,但是可能会增加一些代码量。如果元组中有100个数据,而我们只对一个数据感兴趣,可以用_ 来代替我们不感兴趣的变量名,也就是过滤掉他们。代码如下:
var newTuple = ("kt",20)
var (name , _) = newTuple
println("name = \(name)")
输出结果:
name = kt
如果还是觉得需要写出变量名麻烦,还可以使用更简单的下表解绑。这时候可以把元组当做数组,直接写出变量的在元组中的下标即可。(下标从0开始)
var newTuple = ("kt",20)
println("name = \(newTuple.0)") //输出结果和之前一样。
但是需要注意的是,这样的写法有一个缺点:下标不可以用变量来表示,也就是说这样的写法是错误的:
var newTuple = ("kt",20)
let index:Int = 0
println("name = \(newTuple.index)")
//错误,报错:“(String, Int)doesn‘t not have a member named ‘index‘”
试图越界访问一个不存在的数据会导致编译错误。
如果在定义元组的时候,指定了变量的变量名,还可以根据变量的变量名来解绑。
var newTuple = (name: "kt", age: 20)
println("name = \(newTuple.name)")
与用下标解绑一样,这里的变量名name不可以用一个具有”name”值的String类型变量来代替。
元组(Tuple)的概念对于没有接触过脚本语言的程序猿来说,是比较新的概念。但是元组既不复杂也不神秘,很多时候用Struct结构体或者类都可以解决。可以把元组理解为一种只能存放数据,却没有定义方法的轻量级数据结构。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/abc649395594/article/details/47158931