元组(Tuples)

    元组是一种类型,它多个值组合在一个复合的值里面。元组中的值可以是任何类型,和元组中其他值的类型也不需要一样。

        let http404Error = (404, "Not Found")

    上面的例子中,(404, "Not Found")是一个描述HTTP状态值的元祖。HTTP状态值是当你访问Web页的时候Web服务器返回的特殊的值。404, "Not Found"这个状态值表示你请求的Web页面不存在。

    (404, "Not Found")这个元组把一个Int类型的值和一个String类型值组合在了一起,给了HTTP状态值2个独立的值:一个数字和一个易于理解的的描述。它可以被描述一个type (Int, String)的元组。

    你可以使用各种组合来创建一个元组,也可以包含你希望包含的所有你希望的不同的类型。没有什么可以阻止你创建一个(Int, Int, Int)的元组或者(String, Bool)的元组,当然也可以是其他你需要的类型的排列组合。

    你可以把一个元组的内容分解成几个独立的常量或者变量,分解之后你可以像平常一样使用:

        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”

    还有另外一种方式可以访问元组的单个元素,就是使用索引,默认从0开始:

        print("The status code is \(http404Error.0)")

        // 打印  "The status code is 404"

        print("The status message is \(http404Error.1)")

        // 打印 "The status message is Not Found

    在定义元组的时候可以定义每一个元素的名字:

        let http200Status = (statusCode: 200, description: "OK")

    如果你在元组中定义了元素的名字,那就可以使用元素的名字去访问这些元素的值:

        print("The status code is \(http200Status.statusCode)")

        // 打印 "The status code is 200"

        print("The status message is \(http200Status.description)")

        // 打印 "The status message is OK”

    元组作为一个函数的返回值是很有用的,一个尝试获取web页的函数可以返回(Int, String)的元组去描述访问的成功或者失败。相比于返回单个数据,通过返回多个不同类型的且各自都表达了明确意思的值,函数可以根据结果提供很多的有用的信息。

NOTE:把多个相关联的数据组合成一个临时的数据组,那么使用元组是很合适的,但是不适合用元组构造出复杂的数据结构,如果你希望把你的数据结构持久的保存下来,那么使用类或者结构体把它模型化是更为合适的选择。

你可能感兴趣的:(元组(Tuples))