元组乃何方神圣?
元组,tuple原出自数据库中的一种概念,就是关系型数据库中的一条记录或者说一行;
一个元组可以包含多个字段,每个字段可以是不同的类型,就像我们从数据库取出一条学生的信息,包括这些
("张三",0001,"男","1391111****") 姓名,编号,性别,手机号
这样的类型一次就可以包含我们需要的多个信息.
如今Swift的 也引入了 这种类型,不得不说 这是Swift的强大之处之一.
元组的定义
(1)定义一个元组并且指定初始值
var student = ("张三",10010)
(2)定义一个元组类型,然后赋值
var student2 :(String,String,Int) student2 = ("李四","女",10011)
student2 = student
var stu = (student,"1100") var stu2 = (("王五",1001,"男"),student2,110)
嵌套元组类型的定义
var yunzu:(Int,(String,Int))
(5)访问元组的元素值,使用类似于数组的下标,可以支持多级下标,类似于2维,多维数组的下标
如 访问 stu 元组中的第二个元素,"1100" 就是 stu.1,[下标从 0开始]
访问 stu 元组中 第一个元素 即 student元组 中的第二个元素 ("男"),则需要使用二级 下标 stu.0.1
(6)打印元组,及元组中的单个元素
插值符号 : / (元素值) 则可以将该 元素值表示在 字符串中
如
var a = 1 println("a的值是 \(a)")
则 可以直接输出 a对应的值,类似于 C语言中的 %d,%s格式化的符号
如下,你可以在字符串中 来 插入 元素的值
println("student元组的是:\(student)") println("student元组的第一个元素是\(student.0)") println("stu元组的第一个元素(元组)中的第一个元素是\(stu.0.0)")
当然你也可以直接打印其值,不需要 使用引号
println(student) println(student.0) println(stu.0.0)
(7)元组的拆分
var student = ("张三","男",10010)
//把元组的元素拆分到各个变量中去 var (name,sex,id) = student //直接使用变量名来访问 println(name) println("编号是 :\(id)")
我们还可以在拆分的过程中去掉我们不想要的元素,使用 下划线 _ 代替,下划线在 循环,变量绑定,函数定义等地方还会遇到
var (name1,sex1,_) = student
那样,sex1之后的那个元素就被忽略了
(8)以键值对的形式使用元组,元组中的每一个变量可以有一个名字,这个名字类似于字典的key键
直接使用key来访问元组中的变量
var stu3 = (sName:"赵六",sSex:"男",sID:1111) //访问该元组中的元素 println(stu3.sName) println("元组中的编号是\(stu3.sID)")
定义一个键值对类型的元组类型
var stu4:(sNa:String,sSe:String,sI:Int)
//按顺序赋值,需要一一对应 stu4 = ("刘七",1213)
//不按顺序,按 key赋值,可忽略顺序 stu4 = (sSe:"女",sI:1112,sNa:"刘八") //使用Key访问元组中的元素 println(stu4.sNa)
(9)元组的其他用法:
在Switch 语句中使用