元组(tuples):把多个值组合成一个复合值,元组是Objective-C中没有的数据类型,与数组类似,都是表示一组数据的集合,但与数组不同,它的特点是:
- 元组的长度任意
- 元组中的数据可以是不同的数据类型
元组的定义很简单,用小括号括起来,然后以逗号隔开就可以了
直接上代码:
1 //MARK: - 元组 2 //定义一个元组 3 //方法一:直接初始化一个元素(使用Swift隐式转换的特点) 4 let tuples = ("苹果",["iOS","html5","Android"]) //tuples 的类型是(String,Array), 值是("苹果",["iOS","html5","Android"]) 5 print(tuples) 6 //方法二:显示初始化的方式 7 let tuples1 : (String,Array) = ("安卓",["iOS","html5","Android"]) 8 print(tuples1) 9 //*注* 关于元组类型的说明:你可以把任意顺序的类型组合成一个元组,这个元组可以包含所有类型。只要你想,你可以创建一个类型为(Int, Int, Int)或者(String, Bool)或者其他任何你想要的组合的元组 10 11 //取出元组中的值 12 //第一种取值方式:直接把元组赋值给另外一个常量,根据相关的标记进行取值 13 let tuples_new : (appStyle:String,course:Array) = tuples 14 var classInfo = tuples_new.appStyle + tuples_new.course[0] + tuples_new.course[1] + tuples_new.course[2] 15 print(classInfo) 16 17 //第二种取值方式:直接根据下标进行取值 18 let classInfoNew = tuples_new.0 + tuples_new.1[0] + tuples_new.1[1] + tuples_new.1[2] 19 print(classInfoNew)
可变元组和不可变元组
用var定义的元组就是可变元组,let定义的就是不可变元组。不管是可变还是不可变元组,元组在创建后就不能对其长度进行增加和删除之类的修改,只有可变元组能在创建之后修改元组中的数据
1 var superTuples = (name:"asd", 12, ["111", "222"]) 2 superTuples.name = "qwe" 3 print(superTuples.name) //会打印name变成qwe 4 5 let superTuples = (name:"asd", 12, ["111", "222"]) 6 superTuples.name = "qwe" 7 print(superTuples.name) //会报错
需要注意的是,可变元组虽然可以修改数据,但却不能改变其数据的数据类型
1 var superTuplesType = (name:"asd", 12, ["111", "222"]) 2 superTuplesType.name = 1 3 print(superTuples.name) //会报错