元组将多个任意数据类型合并成单一的复合类型,元组内存的值可以是任何类型。元组的语法格式:
语法格式:(value1,value2, …… valueN)
例:(404,“Not Found”)定义了一个描述HTTP状态码的元组,当你的请求失败的时候就会返回 404 Not Found.这个元组将一个Int类型和String类型组合起来表示HTTP状态码的两种不同的值,可以描述为“一个类型为(Int,String)的元组”。
let http404Error = (404, "Not Found")
//定义了一个学生元组类型,包括name、age、sex
let student = ("张三",20,true)
定义和访问元组
- 元组定义使用:
//定义元组变量,并指定初始值,系统推断该元组类型为(String,Int,bool)
let student = ("张三", 19, true)
//定义元组变量,并为元组中的元素指定名字和指定值
let student = (name:"李四",age:20,male:true)
//使用元组类型来定义元组变量,并为元组所有元素指定值
let student:(name: String, age: Int, male: Bool) = ("王五", 20, true)
//将元组拆分成多个常量
let (name,age,male) = ("Davie", 20, true)
//使用元组类型来定义元组变量
var student : (String , Int , Bool)
//为元组变量赋值时必须为所有成员都指定值
score = ("张三 , 21, ,true)
输出元组
print("student元组的值为:\(student)")
输出结果: (name: "张三", age: 20, male: true)
- 使用指定名字访问:
print("name is \(student.name)")
print("age is \(student.age)")
print("sex is male \(student.male)")
输出
name is 张三
age is 20
sex is male true
- 使用索引访问元组的值:
print("name is \(student.0)")
print("age is \(student.1)")
print("sex is male \(student.2)")
输出
索引取值 name is 张三
索引取值 age is 20
索引取值 sex is male true
- 将元组内容分解成单独的常量和变量访问:
let (name,age,male) = ("Davie", 20, true)
print("分解取值 name is \(name)")
print("分解取值 age is \(age)")
print("分解取值 sex is male \(male)")
当分解元组的时候,如果只需要其中的一部分数据,不需要的数据可以用下划线“_”代替。
let (name,age,_) = ("Davie", 20, true)
输出
分解取值 name is Davie
分解取值 age is 20
分解取值 sex is male true
元组可以作为函数的返回值和参数,作为函数返回值时,元组非常有用,相比只能返回一个类型的值,元组能包含两个不同类型值,他可以让函数的返回信息更有用
注意:元组在临时的值组合中很有用,但是它们不适合创建复杂的数据结构。如果你的数据结构超出了临时使用的范围,那么请建立一个类或结构体来代替元组
网友评论