美文网首页
Swift 中的元祖

Swift 中的元祖

作者: Swift研习室 | 来源:发表于2019-02-10 09:52 被阅读5次

使用元祖打包数据

元组(tuples)可以把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。

下面这个例子中, (404, "Not Found") 是一个描述 HTTP 状态码(HTTP status code)的元组。HTTP 状态码是当你请求网页的时候 web 服务器返回的一个特殊值。如果你请求的网页不存在就会返回一个404 Not Found 状态码。

let http404Error = (404, "Not Found")
// http404Error 的类型是 (Int, String),值是 (404, "Not Found")

(404, "Not Found") 元组把一个 Int 值和一个 String 值组合起来表示 HTTP 状态码的两个部分:一个数字和一个人类可读的描述。这个元组可以被描述为“一个类型为 (Int, String) 的元组”。

你可以把任意顺序的类型组合成一个元组,这个元组可以包含所有类型。只要你想,你可以创建一个类型为 (Int, Int, Int) 或者 (String, Bool) 或者其他任何你想要的组合的元组。

你可以将一个元组的内容分解(decompose)成单独的常量和变量,然后你就可以正常使用它们了:

// 定义一个 HTTP 状态码和描述的元祖,元祖类型为(Int, String)
let http404Error = (404, "Not Found")

// 1. 通过索引的方式访问元祖
http404Error.0
http404Error.1

// 2. 通过分解赋值成单独的常量或变量
let (statusCode, statusMessage) = http404Error
print("\(statusCode) ---- \(statusMessage)")

// 2.1 可以通过 _ 忽略不想要的值, 如元祖中的 "Not Found" 不需要使用到的情况下可以这样做
let (statusCode2, _) = http404Error
print(statusCode2)

我们还可以在定义元祖的时候单独给元祖中的元素命名, 以后即可通过该命名访问对应的元素

let http200Status = (statusCode: 200, description: "OK")
print("The status code is \(http200Status.statusCode)")
print("The status message is \(http200Status.description)")

元祖比较

当我们比较两个元祖类型的变量时,要遵循下面的规则:
首先,只有元素个数相同的元祖变量之间,才能进行比较。例如,下面的代码会引发编译错误:

let tuple12 = (1, 2)
let tuple123 = (1, 2, 3)

tuple2 < tuple3  // 编译报错

其次,当 Tuple 中元素个数相同时,比较是按照 Tuple 中元素的位置从前向后依次进行的:

如果 Tuple 中,相同位置的两个元素相等,则继续比较下一个位置的两个元素,并根据第一个同一位置不相等的两个元素的大小关系,确定两个 Tuple 变量的关系;
如果两个 Tuple 中所有位置的元素都相等,则两个 Tuple 变量相等;
因此,对于下面这个例子,tuple11 < tuple12 的结果是 true:

let tuple11 = (1, 1)
let tuple12 = (1, 2)

tuple11 < tuple12 // true

但是,有一点要说明的是,我们只可以对最多包含 6 个元素的 Tuple 变量进行比较,超过这个数量,Swift 会报错。例如对于下面这段代码:

let largeTuple1 = (1, 2, 3, 4, 5, 6, 7)
let largeTuple2 = (1, 2, 3, 4, 5, 6, 7)

largeTuple1 == largeTuple2  // Error !!!

相关文章

  • ReactiveCocoa入门(2)元祖、json解析、应用

    3.3 元祖 RACTuple 什么叫做元祖?在 swift 中也有所谓的元祖,但是他跟 Objective-C ...

  • Swift 中的元祖

    使用元祖打包数据 元组(tuples)可以把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。...

  • 2019-05-05: 七:Swift中元祖的使用?

    一:Swift中元祖的使用? 二:元祖的介绍 三:元组的定义 四:元组的简单使用

  • Swift 元祖

    元祖的简单介绍 元祖是一种数据结构,在数学中广泛使用 元祖类似于数组和字典 元祖可以用于定义一组数据 组成元祖类型...

  • Swift 元祖

    Swift 4还引入了元组类型,用于在单个复合值中对多个值进行分组。元组中的值可以是任何类型,并且不需要是相同类型...

  • swift语法--02元祖

    swift语法--元祖 元祖 复合数据类型 只要将多个相同或者不同的数据用()括起来就是元祖 优点: 在以前没有元...

  • swift3 对比 swift2 更改了什么

    运算符 for循环 元祖 selector UIColor Any和AnyObject 这两个类型都是Swift中...

  • 07-Swift 元祖的使用

    一、元祖的概念 元祖是 Swift 特有的一种数据结构; 可以用来定义一组数据; 类似于数组和字典; 组成元祖类型...

  • 控制语句

    if语句 switch swift不需要加break跳出 区间匹配 元祖匹配 case中还可以使用where关键字...

  • swift 模式匹配

    写swift一时爽,一直写一直爽~~~ 模式匹配 switt中强大的switch case 结合枚举和元祖会有意想...

网友评论

      本文标题:Swift 中的元祖

      本文链接:https://www.haomeiwen.com/subject/wxagsqtx.html