zoukankan      html  css  js  c++  java
  • Swift语言指南(八)--语言基础之元组

    元组

    元组(Tuples)将多个值组合为一个复合值。元组内的值可以是任何类型,各个元素不需要为相同类型(各个元素之间类型独立,互不干扰--Joe.Huang)。

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

    1 let http404Error = (404, "Not Found")
    2 // http404Error is of type (Int, String), and equals (404, "Not Found")
    3 // http404错误的类型为(整型,字符串类型),它的值是(404,"Not Found")

    (404, "Not Found") 元组将一个 Int 值与一个 String 值组合起来,表示 HTTP 状态码的两个值:一个数字和一个人们可读取的(文字性)描述。它可以这样理解:“一个类型为 (Int, String) 的元组”。

    你可以将类型任意排列来创建元组,也可以随心所欲地让元组包含多种不同类型。只要你愿意,创建类型为 (Int, Int, Int)(String, Bool) 的元组也不会有问题,当然,根据你的需要,其它排列方式也是可以的。

    元组的内容可以分解(decompose)还原并赋值给单独的常量或变量,然后便可照常访问:

    1 let (statusCode, statusMessage) = http404Error
    2 println("The status code is (statusCode)")
    3 // prints "The status code is 404" //输出“状态码为 404”
    4 println("The status message is (statusMessage)")
    5 // prints "The status message is Not Found //输出"状态信息 Not Found"

    如果你只需要元组的某一部分值,可以在分解元组时用下划线(_)标识来忽略掉其他部分:

    1 let (justTheStatusCode, _) = http404Error
    2 println("The status code is (justTheStatusCode)")
    3 // prints "The status code is 404 //输出“状态码为 404”

    或者,通过以 0 开头的元组索引访问元组的各个元素值:

    1 println("The status code is (http404Error.0)")
    2 // prints "The status code is 404" //输出“状态码为 404”
    3 println("The status message is (http404Error.1)")
    4 // prints "The status message is Not Found //输出“状态码为 Not Found”
    5 //这种方式类似于数组通过下标索引访问数组各个元素的值--Joe.Huang

    还可以在定义元组时为元组的各个元素单独命名:

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

    为元组各元素命名后,便可以通过元素名称来访问各个元素的值了:

    1 println("The status code is (http200Status.statusCode)")
    2 // prints "The status code is 200" //输出“状态码为 404”
    3 println("The status message is (http200Status.description)")
    4 // prints "The status message is OK //输出“状态信息 OK”

    元组在作为函数返回值时非常有用。一个获取网页内容的函数可能会通过返回一个 (Int, String) 的元组类型来描述网页载入是成功还是失败。函数会返回两个类型完全不同的值来描述返回的状态或结果,(这种返回方式)所能提供的信息比只能返回固定类型的单个值要有用得多。详情请参见 多个返回值的函数(后面章节会译到)。

    注:

    元组对于多个关联值的临时组合是很有用的。但它们并不适用于创建复杂的数据结构,如果你的数据结构的生命周期超过临时使用的范畴(不是临时使用的值,就应该通过类或建模缓存起来--Joe.Huang),请将它作为类或结构建模,而不是以元组存储。详情请见 类与结构(后面章节会译到)

    谢谢,Swifter-QQ群:362232993,同好者进~ 

    Fork:https://github.com/Joejo/Swift-lesson-for-chinese

  • 相关阅读:
    Android 学习笔记之WebService实现远程调用+内部原理分析...
    Android学习笔记之Json的使用....
    Android学习笔记之DocumentBuilder的使用....
    Android学习笔记之ExecutorService线程池的应用....
    Android学习笔记之SoftReference软引用...
    windows系统获取进程的pid号并终止
    Linux系统的时间比北京时间慢12个小时的处理方案(将EDT时区改为CST)
    将java的jar包作为windows的服务来启动
    linux初始化shell脚本
    linux中网络部分的总结
  • 原文地址:https://www.cnblogs.com/joejs/p/3784768.html
Copyright © 2011-2022 走看看