元组作为一种高级数据类型是很多其他语言中所没有的,Java,C,C++中都没有元组的概念,在Python中有元组的概念。所以相对来说比较特殊,我们要好好学习一下。
Tuples (元组),可以将多个不同的值集合成一个数据,如(true,"Jack","男"),(404,"Not Found")等等。特点就是可以有任意多个值,不同的值可以是不同的类型。
(1)声明一个元组:表示注册信息。注意:元组可以声明为常量let,也可以声明为变量var。
var registerInfo=(true,"男")
如图可以显示元组中的信息,其中的索引值分别为0,1,2.。。。(是不是跟数组有点像呢?)
(2)如何取出元组中的值呢?
方法一:
再定义一个元组,为元组中的每一项声明一个名称,然后进行赋值,救护一一对应。
var registerInfo=(true,"男") var (isRegisterSuccess,name,gender)=registerInfo //声明另一个元组;每一项一一对应 isRegisterSuccess //输出元组中的值; name gender
输出结果如下:
。
方法二:
根据元组名称和索引值进行取值。
var registerInfo=(true,"男") registerInfo.0 registerInfo.1 registerInfo.2
输出结果:
。
方法三:
方法一较为麻烦,方法二不够直观,可以把上述两种方法结合起来。再声明一个元组的时候就以键值对的形式存放。每一个值对应一个属性,在取值的时候直接根据元组名和属性取出来就可以了。代码如下:
var registerInfo=(isRegisterSuccess:true,name:"Jack",gender:"男") registerInfo.isRegisterSuccess registerInfo.name registerInfo.gender
输出结果:完全符合我们的预期。
。
(3)使用_下划线忽略元组部分值
var loginRes=(true,"Jack") var (isLoginSeccess,_)=loginRes //是否登陆不关心第二个姓名值; if isLoginSeccess{ println("登录成功") }
输出结果:
.
(4)元素变量可以修改值
用var声明的元组变量可以修改值,用let声明的元组常量不能修改值。示例代码如下:
var loginRes=(isLoginSuccess:true,name:"Jack") loginRes.isLoginSuccess = false; loginRes.name = "Mike" loginRes.isLoginSuccess loginRes.name
输出结果:符合预期,元组内的值成功被修改。
.
(5)元组的类型到底是什么?
就像整型的类型是Int,字符串的类型是String,那么元组的类型到底是什么呢?其实元组的类型是一种组合类型。是可以由其他基本类型组合而成的类型;通过一行代码来感受一下:
var registerInfo:(Bool,String,String)=(true,"男")
示例代码中,元组registerInfo的类型就(Bool,String).是不是很奇怪呢?哈哈。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!