元组

元组(tuples)是由其它类型组合而成的类型。元组可能包含零或多个类型,比如 字符串、整数、字符、布尔以及其它元组。同时请注意,元组是值传递,而不是引用。
在Swift中创建元组的方式很简单,元组类型是用括号包围,由一个逗号分隔的零个或多个类型的列表。例如:
let firstHighScore = ("Mary", 9001)
另外,在创建元组时你还可以给元组中的元素命名:
let secondHighScore = (name: "James", score: 4096)
以上就是创建元组的两种方式,非常简单和简洁。你不需要像创建struct一样写出它的结构和内部属性,也不需要像创建class一样要写初始化方法。你只需要把你想用的、任何类型的值放在圆括号内,用逗号隔开即可。如果你愿意你还可以给每个元素命名,提高元组使用效率。
从元组中读元素
如果我们没有给元组的元素命名,我们可以用点语法,通过定义好的元组变量或常量获取它的第1个到第n个元素:
let firstHighScore = ("Mary", 9001)
println(firstHighScore.0) // Mary
println(firstHighScore.1) // 9001
如果你觉得上述这种方法会造成语义的不明确,那么我们还可以将元组赋值给一个带有元素名称的元组(元素名称个数要对应):
let (firstName, firstScore) = firstHighScore println(firstName) // Mary println(firstScore) // 9001
如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:
let (_, firstScore) = firstHighScore println(firstScore) // 9001
如果我们已经给元组中的元素命名了名称,那么我们可以这样写:
let secondHighScore = (name: "James", score: 4096) println(secondHighScore.name) // James println(secondHighScore.score) // 4096
将元组作为函数返回值
当你想让一个函数能够返回多种类型时,这是元组的最佳使用场景。
我们可以将元组作为函数的返回值,下面这个函数的返回值就是我们之前定义过的secondHighScore元组:
func getAHighScore() -> (name: String, score: Int) {
let theName = "Patricia"
let theScore = 3894
return (theName, theScore)
}
为什么说上述函数的返回值是secondHighScore元组呢?因为getAHighScore函数返回的元组元素个数、元素名称、元素类型均和secondHighScore相同。
其实将元组作为函数的返回值时也可以不必对元素进行命名,只要你明白每个元素代表的含义即可:
func getAHighScore() -> (String, Int) {
let theName = "Patricia"
let theScore = 3894
return (theName, theScore)
}
如果你不确定返回的元组一定不为nil,那么你可以返回一个可选的元组类型:
func maybeGetHighScore() -> (String, Int)? {
return nil
}
因为是可选的元组类型,所以当返回的元组不为nil时,你需要对元组进行解包:
if let possibleScore = maybeGetHighScore() {
possibleScore.0
possibleScore.1
} else {
println("Nothing Here")
}
注意:当你定义了一个没有返回值的函数时,其实该函数是返回一个空的元组()。
元组的访问级别
元组的访问级别取决于它包含的元素。比如元组里的元素都是private级别的,那么该元组也是private级别的。但这里有一个遵循最小的原则,也就是说如果一个元组中有两个元素,一个为private级别,另一个为public级别,那么该元组遵循最小原则,它的访问级别为private。
元组是值类型
关于值类型和引用类型的知识这里不再累赘,我们通过一个代码示例来看看元组是哪种类型:
var someScore = ("John", 55)
var anotherScore = someScore
anotherScore.0 = "Robert"
println(anotherScore.0) //Outputs: "Robert"
println(someScore.0) //Outputs: "John"
通过上述的代码示例可以看出,我把someScore元组赋值给了anotherScore,然后修改了anotherScore的第1个元素的值,最后分别打印了someScore和anotherScore第1个元素的值。someScore元组第一个元素的值为Robert,而anotherScore元组第一个元素的值仍然为John。由此可见元组是值类型。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# swift
# 元组
# 元组定义
# swift3.0
# Swift中switch语句区间和元组模式匹配
# IOS 开发之Swift 元组的实例详解
# 返回值
# 组中
# 第一个
# 多个
# 当你
# 你还
# 我们可以
# 可选
# 不为
# 不需
# 要像
# 都是
# 你只需要
# 这是
# 如果你
# 放在
# 还可以
# 你可以
# 是由
# 两种
相关文章:
制作公司内部网站有哪些,内网如何建网站?
教程网站设计制作软件,怎么创建自己的一个网站?
linux top下的 minerd 木马清除方法
网站插件制作软件免费下载,网页视频怎么下到本地插件?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何用搬瓦工VPS快速搭建个人网站?
如何在Windows虚拟主机上快速搭建网站?
h5网站制作工具有哪些,h5页面制作工具有哪些?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
c++怎么用jemalloc c++替换默认内存分配器【性能】
设计网站制作公司有哪些,制作网页教程?
建设网站制作价格,怎样建立自己的公司网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
微课制作网站有哪些,微课网怎么进?
小型网站制作HTML,*游戏网站怎么搭建?
如何获取PHP WAP自助建站系统源码?
如何正确选择百度移动适配建站域名?
如何访问已购建站主机并解决登录问题?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
建站之星免费模板:自助建站系统与智能响应式一键生成
如何在阿里云域名上完成建站全流程?
利用JavaScript实现拖拽改变元素大小
建站之星如何实现网站加密操作?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
手机网站制作与建设方案,手机网站如何建设?
C#怎么创建控制台应用 C# Console App项目创建方法
建站之星logo尺寸如何设置最合适?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
宁波自助建站系统如何快速打造专业企业网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
已有域名和空间如何搭建网站?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
建站之星后台管理:高效配置与模板优化提升用户体验
如何通过免费商城建站系统源码自定义网站主题与功能?
如何解决VPS建站LNMP环境配置常见问题?
制作证书网站有哪些,全国城建培训中心证书查询官网?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
如何快速生成高效建站系统源代码?
高端云建站费用究竟需要多少预算?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
建站之星微信建站一键生成小程序+多端营销系统
*请认真填写需求信息,我们会在24小时内与您取得联系。