• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift学习笔记之元组(tuples)

Swift学习笔记之元组(tuples)

作者:sunjinshuai 字体:[增加 减小] 来源:互联网 时间:2017-05-28

sunjinshuai 通过本文主要向大家介绍了Swift学习笔记之元组(tuples)等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

元组

元组(tuples)是由其它类型组合而成的类型。元组可能包含零或多个类型,比如 字符串、整数、字符、布尔以及其它元组。同时请注意,元组是值传递,而不是引用。

在Swift中创建元组的方式很简单,元组类型是用括号包围,由一个逗号分隔的零个或多个类型的列表。例如:

let firstHighScore = ("Mary", 9001)
</div>

另外,在创建元组时你还可以给元组中的元素命名:

let secondHighScore = (name: "James", score: 4096)
</div>

以上就是创建元组的两种方式,非常简单和简洁。你不需要像创建struct一样写出它的结构和内部属性,也不需要像创建class一样要写初始化方法。你只需要把你想用的、任何类型的值放在圆括号内,用逗号隔开即可。如果你愿意你还可以给每个元素命名,提高元组使用效率。

从元组中读元素

如果我们没有给元组的元素命名,我们可以用点语法,通过定义好的元组变量或常量获取它的第1个到第n个元素:

let firstHighScore = ("Mary", 9001)
println(firstHighScore.0) // Mary
println(firstHighScore.1) // 9001
</div>

如果你觉得上述这种方法会造成语义的不明确,那么我们还可以将元组赋值给一个带有元素名称的元组(元素名称个数要对应):

let (firstName, firstScore) = firstHighScore
println(firstName) // Mary
println(firstScore) // 9001
</div>

如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:

let (_, firstScore) = firstHighScore
println(firstScore) // 9001
</div>

如果我们已经给元组中的元素命名了名称,那么我们可以这样写:

let secondHighScore = (name: "James", score: 4096)
println(secondHighScore.name) // James
println(secondHighScore.score) // 4096
</div>

将元组作为函数返回值

当你想让一个函数能够返回多种类型时,这是元组的最佳使用场景。

我们可以将元组作为函数的返回值,下面这个函数的返回值就是我们之前定义过的secondHighScore元组:

func getAHighScore() -> (name: String, score: Int) {
 let theName = "Patricia"
 let theScore = 3894
 return (theName, theScore)
}
</div>

为什么说上述函数的返回值是secondHighScore元组呢?因为getAHighScore函数返回的元组元素个数、元素名称、元素类型均和secondHighScore相同。

其实将元组作为函数的返回值时也可以不必对元素进行命名,只要你明白每个元素代表的含义即可:

func getAHighScore() -> (String, Int) {
 let theName = "Patricia"
 let theScore = 3894
 return (theName, theScore)
}
</div>

如果你不确定返回的元组一定不为nil,那么你可以返回一个可选的元组类型:

func maybeGetHighScore() -> (String, Int)? {
 return nil
}
</div>

因为是可选的元组类型,所以当返回的元组不为nil时,你需要对元组进行解包:

if let possibleScore = maybeGetHighScore() {
 possibleScore.0
 possibleScore.1
} else {
 println("Nothing Here")
}
</div>

注意:当你定义了一个没有返回值的函数时,其实该函数是返回一个空的元组()。

元组的访问级别

元组的访问级别取决于它包含的元素。比如元组里的元素都是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"
</div>

通过上述的代码示例可以看出,我把someScore元组赋值给了anotherScore,然后修改了anotherScore的第1个元素的值,最后分别打印了someScore和anotherScore第1个元素的值。someScore元组第一个元素的值为Robert,而anotherScore元组第一个元素的值仍然为John。由此可见元组是值类型。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-28Swift中的条件切换语句switch...case学习教程
  • 2017-05-28Swift中闭包实战案例详解
  • 2017-05-28深入解析Swift代理模式
  • 2017-05-28Swift调用Objective-C代码
  • 2017-05-28struts2实现文件下载功能
  • 2017-05-28深入解析Swift语言编程中的可选链
  • 2017-05-22Swift 变量
  • 2017-05-28Objective-c代码如何移植为Swift代码 Objective-c代码转移到Swift过程介绍
  • 2017-05-28Swift的开发环境搭建以及基本语法详解
  • 2017-05-28Swift和C语言混合编程教程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift教程之闭包详解
    • Swift 构造过程
    • Swift算法实现字符串转数字的方法示例
    • 如何设计一个秒杀系统
    • Swift 类型转换
    • 老生常谈JVM的内存溢出说明及参数调整
    • Swift 3.0基础学习之类与结构体
    • 关于swift的个人小结
    • Swift中字典与JSON转换的方法
    • 通过Session案例分析一次性验证码登录

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有