Swift中的元组tuple的用法
用途
tuple用于传递复合类型的数据,介于基础类型和类之间,复杂的数据通过类(或结构)存储,稍简单的通过元组。
元组是使用非常便利的利器,有必要整理一篇博文。
定义
使用括号(), 括号内以逗号分割各种类型的数据, 形式如
(Int, String)
或 (String, Int, String......)
如:
userZhangsan = ("Zhangsan", "张三", "越秀区清水濠小学", 9, "三年级", true) //读取元组中的元素,如: userZhangsan[] //"Zhangsan" userZhangsan[] //"张三" userZhangsan[] //"越秀区清水濠小学" userZhangsan[] // userZhangsan[] //"三年级"
变量命名定义
还有另外一种方法也能以变量名的方式去访问元组中的数据,那就是在元组初始化的时候就给它一个变量名:
let userInfo = (name:"Zhangsan" ,isMale:true, age:)
userInfo.name //Zhangsan
userInfo.isMale //true
userInfo.age //
分解和变量转换
对于
let http404Error = (404, "Not Found")
你可以将一个元组的内容分解(decompose)成单独的常量或变量,然后你就可以正常使用它们了:
let (statusCode, statusMessage) = http404Error
print("The status code is \(statusCode)")
// 输出 "The status code is 404"
print("The status message is \(statusMessage)")
// 输出 "The status message is Not Found"
忽略部分值
如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记:
let (justTheStatusCode, _) = http404Error
print("The status code is \(justTheStatusCode)")
// 输出 "The status code is 404"
多值赋值
//一般我们的变量赋值这么干:
var a =
var b =
var c = 3
//现在可以用一行替代:
var (a, b, c) = (, , ) //变量交换就是这么简单:
(a, b) = (b, a)
可变元组和不可变元组
用var定义的元组就是可变元组,let定义的就是不可变元组。不管是可变还是不可变元组,元组在创建后就不能对其长度进行增加和删除之类的修改,只有可变元组能在创建之后修改元组中的数据:
var userInfo = (name:"Bannings" ,true, age:) //定义可变元组
userInfo.name = "newName"
userInfo.name //newName let userInfo1 = (name:"Bannings" ,true, age:) //定义不可变元组
userInfo1.name = "newName" //报错,不可修改
作为函数返回值
func divmod(_ a: Int, _ b:Int) -> (Int, Int) {
return (a / b, a % b)
} divmod(, ) // (2, 1)
divmod(, ) // (2, 1)
divmod(, ) // (3, 0) //或者使用命名的版本: func divmod(_ a: Int, _ b:Int) -> (quotient: Int, remainder: Int) {
return (a / b, a % b)
} divmod(, ) // (quotient: 2, remainder:1)
divmod(, ) // (quotient: 2, remainder:1)
divmod(, ) // (quotient: 3, remainder:0)
Swift中的元组tuple的用法的更多相关文章
- Python中的元组(tuple)、列表(list)、字典(dict)
-------------------------------更新中-------------------------------------- 元组(tuple): 元组常用小括号表示,即:(),元 ...
- C#中的元组(Tuple)和结构体(struct)
在正常的函数调用中,一个函数只能返回一个类型的值,但在某些特殊情况下,我们可能需要一个方法返回多个类型的值,除了通过ref,out或者泛型集合可以实现这种需求外,今天,讲一下元组和结构体在这一方面的应 ...
- Swift中可选类型(Optional)的用法 以及? 和 ! 的区别 (转载博客,知识分享)
本文转载自:代码手工艺人的博客,原文名称:Swift之 ? 和 ! Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之 ...
- swift中的尾随闭包的用法
尾随闭包就是这个函数的最后一个参数是一个闭包,所以规定这个闭包既可以写在函数的参数括号里面,也可以直接放在最后面来使用,就像重新给这个函数定义了一次一样,有些怪,不过用的时候,可以把闭包写在外面的.这 ...
- swift中Range的使用书名
在swift中Range有两种用法 1.把字符串转换成NSString来使用 //这里是把swift的字符换转换成了nsstring 使用 let str :NSString = text.strin ...
- swift中第三方网络请求库Alamofire的安装与使用
swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面 ...
- Swift中元组(Tuples),结构体(Struct),枚举(Enums)之间的区别
Swift有许多种存储数据方式,你可以用枚举(enums),元组(tuples),结构体(structs),类(classes),在这篇文章中我们将比较枚举.元组.结构体之间区别,首先从最简单的开始- ...
- python中元组tuple
python中列表(list)和元组(tuple)有很多相似的地方,它们都是容器,由一系列的对象构成,都可以包含任意类型的元素,甚至是一个序列. list和tuple的不同首先体现在写法上: li ...
- C#中的元组对象Tuple
原文:C#中的元组对象Tuple 一.什么是元组 元组就是一些对象的集合,在我们编程时,比如一个人的信息,我们常常创建一个Person类去描述一个人,传统的做法如下: public class Per ...
随机推荐
- mysql修改用户密码命令
C:\Users\20160216>mysql -h 10.180.6.183 -u root -pEnter password: ******Welcome to the MySQL moni ...
- identityserver4 代码系列
链接:https://pan.baidu.com/s/1ePLwUxGpIPObwA8nnfDT9w 提取码:gr0x
- odoo8 元素简介
一:模型module: 1. 字段类型 (1)可控字段: fileds.char() fileds.Boolean() fileds.Date() (2)保留字段:(系统自动生成) id (Id) t ...
- Idea如果添加Maven模块
1.要创建一个和heaton-app同级的Maven模块,如果所示 2.点击下一步,添加ArtifactId,其中 groupId : 定义了项目属于哪个组,举个例子,如果你的公司是myc ...
- random模块,生成随机数
1.random.choice(sep) 从一个序列中随机选取一个元素返回 >>> list1=["a",1,2,3,"b"] >> ...
- python简单入门
一. 初识python. 1. 认识计算机 CPU(大脑) 3GHZ + 内存(DDR4) + 主板 + 电源(心脏)+ 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 80MB/s 操作系统 windo ...
- 关于阿里云ECS服务器修改远程端口的一点总结
般修改公司的远程服务器的登录端口号分为两大步: 一.修改注册表中的两个地方的端口号:(注册表打开命令:regedit) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro ...
- Injection
what java EE提供了注入机制,使您的对象能够获取对资源和其他依赖项的引用,而无需直接实例化它们.通过使用将字段标记为注入点的注释之一来装饰字段或方法,可以在类中声明所需的资源和其他依赖项.然 ...
- Codeforces 845 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意:2n2n2n个人下棋,分为两个阵营,每个阵营nnn个人,每个人有一个积分,积分高的能赢积分低的,问如果你可以随意选人,然 ...
- Win7 VS2017 NASM编译FFMPEG(2018.12.22)
今天无意中在gayhub发现个牛逼工程,全VS工程编译FFMPEG库,包括依赖库全是VS生成的,无需Mingw等Linux环境. 简单记录下过程,以防将来重装系统等情况,备忘. https://git ...