元组(Tuple)是Swift语言中特有的数据类型,它将多个值组合成一个复合值,元组内的值可以是任意类型,并不一定相同,元组在作为函数返回值时非常有用。本案例将学习如何使用元组,包括元组的定义和访问,元组和switch语句结合使用等。
声明
var aTuple = (10, "Xishi")
最简单的元组,就是在圆括号
中,用逗号
分割的一组值。
元素带名称的元组:
var aTuple = (index: 10, name: "Xishi")
元组有以下特点:
- 一旦声明,可以改值,但不能添加/删除元素
- 不能更改已经声明的元素名称
- 已声明的名称可以省略,但未声明名称的元组,不可添加名称:
var aTuple = (10, "Xishi") // 未声明名称
aTuple = (10, name:"Xishi") // 后期添加名称,可行但无效
aTuple.name // 错误
取值
要取用元组中的值,针对声明时是否有元素名称,有两种取值方法,
通用方法,使用下标:
aTuple.0 // == 10
aTuple.1 // == "Xishi"
已命名的元组,可使用名称:
aTuple.index
aTuple.name
还可以直接分拆成常量/变量:
let (x, y) = aTuple
x // == 10
y // == "Xishi"
var (a, b) = aTuple
a // == 10
b // == "Xishi"
取值时可以指定类型,加强类型判断:
let (x, y): (Int, Int) = (1, 2) //正确
let (x, y): (Int, Int) = aTuple //错误,因为第二个值声明为String,与Int不相符
不想处理的值,可以用下划线_
代替(大概是设计者体恤我们想变量名的痛苦吧):
let (x, _) = aTuple
应用
作为函数参数
func foo(_ args: (Int, Int, String)) -> Int {
return args.0
}
let arguments = (4, 3, "hello")
foo(arguments) // 返回 4
作为函数返回值
利用元组,从函数中返回多个值:
func abc() -> (Int, Int, String) {
return (3, 5, "Xishi")
}
let (a, b, c) = abc()
通过以上介绍,你对元组应该有些概念了,希望你能先忘记这些熟悉的概念,仔细体会文中提到的使用方法,避免在开发时陷入不必要的误区中。
下面这个是RXSwift Demo中的部分用法:
init(input: (
username: Observable<String>,
password: Observable<String>,
repeatedPassword: Observable<String>,
loginTaps: Observable<Void>
),
dependency: (
API: GitHubAPI,
validationService: GitHubValidationService,
wireframe: Wireframe
)
) {
let API = dependency.API
let validationService = dependency.validationService
let wireframe = dependency.wireframe
网友评论