Swift Up and Running——使用Tuple打包类型

高清教学视频

很多时候,我们需要把多个不同类型的值,打包成一个单位处理。

例如,返回一个HTTP状态信息:

  • 状态码: 200; 状态消息: HTTP OK
  • 状态码: 404; 状态消息: File not found

或者,返回一条数据库用户信息记录:

  • 姓名: Mars; 工号: 11; 电子邮件: 11@boxue.io

Swift里,我们可以使用Tuple 来很方便的处理类似的问题。


定义一个Tuple

我们使用下面的方式,来定义一个Tuple

(value1, value2, value3...)

例如,定义我们在开始举例用到的HTTP状态码:


//: #### Define a tuple

let success = (200, "HTTP OK")
let fileNotFound = (404, "File not found")

我们还可以给Tuple中的每一个数据成员指定一个名字,例如,定义一个表达用户信息记录的Tuple

(name1: value1, name2: value2, name3: value3...)


//: #### Define a tuple
let me = (name: "Mars", no: 11, email: "11@boxue.io")

访问Tuple中的数据成员

定义好Tuple之后,我们可以使用下面的方式访问Tuple中的数据成员:


//: #### Access tuple content

success.0
success.1

fileNotFound.0
fileNotFound.1

如果我们在定义Tuple时,指定了Tuple成员的名字,我们就可以像下面这样访问这些数据成员:


//: #### Access tuple content

me.name
me.no
me.email

Tuple Decomposition

我们在定义Tuple的时候,还可以把一个Tuple的值,一一对应的拆分到不同的变量上,这叫做Tuple Decomposition。例如,对于我们之前 定义过的success,我们可以这样定义一个新的Tuple


var (successCode, successMessage) = success

print(successCode)
print(successMessage)

从代码里我们就可以看到,之后,我们就可以直接访问successCode和successMessage的值了,这可以提高我们处理Tuple成员时候的 代码可读性。但是,要说明的是,我们这里是使用success的值,构建了一个新的Tuple,因此修改succeCode或 successMessage的值,不会影响到原来的success。例如,我们修改successCode:


successCode = 201

success

从结果我们可以看到,之前的success的值没有被修改。另外,如果我们只是想对应到Tuple中特定的成员,而忽略其它成员,我们可以使用下划线'_'来代表那些不需要被对应的成员。例如:


let (_, errorMessage) = fileNotFound
print(errorMessage)

Tuple type

每一个Tuple的类型,都是由Tuple中所有数据成员一起决定给的。例如,对于一开始我们定义的success和me,它们的类型就分别是:(IntString)和 (StringIntString)。当我们需要用type annotation定义一个Tuple的时候, 我们可以这样写:


var redirect: (Int, String) = (302, "temporary redirect)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值