天天看点

Swift入门(三)——元组(Tuple)定义元组的创建元组的解绑总结附录

定义

元组是一个包含了若干个相关联变量的对象。

元组的创建

var newTuple = ("kt",)
//由于Swift的类型推导,newTuple被推导为(String,Int)类型的变量
           

元组的解绑

几个变量一旦联合在一起,组成了一个元组,他们就被“绑定”了,要想从一个元组中单独取出某一个数据时,需要解绑元组。

直接解绑

直接解绑是最简单的一种解绑方式,只要定义若干个变量与元组中的变量一一对应即可。

var newTuple = ("kt")
var (name , age) = newTuple
println("name = \(name)")
println("age = \(age)")
           

输出结果:

name = kt
age = 
           

过滤元素解绑

直接解绑使用简单,但是可能会增加一些代码量。如果元组中有100个数据,而我们只对一个数据感兴趣,可以用_ 来代替我们不感兴趣的变量名,也就是过滤掉他们。代码如下:

var newTuple = ("kt")
var (name , _) = newTuple
println("name = \(name)")
           

输出结果:

下标解绑

如果还是觉得需要写出变量名麻烦,还可以使用更简单的下表解绑。这时候可以把元组当做数组,直接写出变量的在元组中的下标即可。(下标从0开始)

var newTuple = ("kt")
println("name = \(newTuple.0)") //输出结果和之前一样。
           

但是需要注意的是,这样的写法有一个缺点:下标不可以用变量来表示,也就是说这样的写法是错误的:

var newTuple = ("kt",)
let index:Int = 
println("name = \(newTuple.index)")

//错误,报错:“(String, Int)doesn't not have a member named 'index'”
           

试图越界访问一个不存在的数据会导致编译错误。

变量名解绑

如果在定义元组的时候,指定了变量的变量名,还可以根据变量的变量名来解绑。

var newTuple = (name: "kt", age:)
println("name = \(newTuple.name)")
           

与用下标解绑一样,这里的变量名name不可以用一个具有”name”值的String类型变量来代替。

总结

元组(Tuple)的概念对于没有接触过脚本语言的程序猿来说,是比较新的概念。但是元组既不复杂也不神秘,很多时候用Struct结构体或者类都可以解决。可以把元组理解为一种只能存放数据,却没有定义方法的轻量级数据结构。

附录

查看完整专栏——《Swift轻松入门》

【Swift入门(一)——基本语法】

【Swift入门(二)——字符与字符串】

【Swift入门(三)——元组(Tuple)】

【Swift入门(四)——可选类型(Optionals)与断言(Assert)】

【Swift入门(五)——数组(Array)】

【Swift入门(六)——字典(Dictionary)】

【Swift入门(七)——结构体(Struct)】

【Swift入门(八)——功能强大的求余运算符】

【Swift入门(九)——String与Int、Double、Float等数字相互转换】

【Swift入门(十)——循环引用、弱引用和无主引用】

【Swift入门(十一)——类型转换与is、as操作】

【Swift入门(十二)——利用Extension添加逆序输出字符串方法】