• Welcome to Swift (苹果官方Swift文档初译与注解十一)---70~76页(第二章)


    Type Aliases (类型别名)

      类型别名是个已经存在的类型定义另一个名字.定义类型别名的时候,使用关键字typealias.

      当你想要使用名字来引用一个已经存在的类型时,类型别名将非常有效,并且更适合代码的上下文理解.例如,当要处理指定大小的一个数据时:

        typealias AudioSample = UInt16

      一旦定义了一个类型别名,就可以在任何地方来代替原来的类型名:

        var maxAmplitudeFound = AudioSample.min

        // maxAmplitudeFound is now 0

      上面的代码里, AudioSample被定义为UInt16的别名,因为它是一个别名,所以调用AudioSample.min实际上是调用UInt16.min,它最后给变量 maxAmplitudeFound赋值了一个初始  化的0.

    Booleans (布尔类型)

      Swift有一个基本的布尔类型:Bool,布尔类型的值用来进行逻辑判断.因为Bool值只能是 true或者false.在Swift中,系统提供了两个布尔类型的常量:true 和 false:

        let orangesAreOrange = true

        let turnipsAreDelicious = false

      代码中,通过使用布尔类型值来初始化,因此常量orangesAreOrange 和 turnipsAreDelicious 的类型是Bool.与使用Int和Double一样,上面的代码里在给常量赋值true或false后,就不  需要再声明它们是布尔类型了.在Swift中,类型判断帮助代码具有更精确和可读性,当给常量或者变量初始化一个已知类型的值的时候,常量或变量的类型就是这个值的类型.

      在进行条件判断的时候,布尔类型的值特别有用,例如下面代码中的if语句:

        if turnipsAreDelicious {

            println("Mmm, tasty turnips!")

        } else {

            println("Eww, turnips are horrible.")

        }

        // prints "Eww, turnips are horrible.”

      if条件判断语句会在流程控制中讲到.

      Swift中,类型安全机制禁止给非布尔类型的值赋值布尔类型.下面的代码将会报告一个编译器错误:

        let i = 1

        if i {

            // this example will not compile, and will report an error

        }

      但是,下面这样的代码是正确的:

        let i = 1

        if i == 1 {

            // this example will compile successfully

        }

      因为 i == 1 比较的结果是布尔类型,因此可以通过类型安全检查.

      与Swift的其他类型安全一样,布尔类型检测避免了偶尔的错误和潜在的代码问题.

    Tuples (元组)

      元组是将多个值组合起来,形成一个复合的值.在元组内部的值,可以是任意类型,也可以互不相同.

      在下面的例子中,(404, "Not Found")就是一个描述HTTP的状态编码的元组.HTTP状态编码是当你进行web访问时,从web服务器返回的特定的值. 404, "Not Found"这个状态码表  示访问的网页不存在.

        let http404Error = (404, "Not Found")

        // http404Error is of type (Int, String), and equals (404, "Not Found")

      元组(404, "Not Found") 将一个Int类型 和一个 String类型组合在一起后赋值给HTTP状态编码:一个数值和一个可读性的描述,它也可以这样描述:一个(Int,String)类型的元组.

      创建元组时,可以任意排列类型,可以包含任意不同的类型.例如可以定义一个(Int,Int,Int)类型的元组,也可以定义一个(String,Bool)类型的元组,或者其他任意你需要的类型.

      解析元组,可以像下面代码中的方式,独立访问元组中的常量或者变量:

        let (statusCode, statusMessage) = http404Error

        println("The status code is (statusCode)")

        // prints "The status code is 404"

        println("The status message is (statusMessage)")

        // prints "The status message is Not Found”

      如果仅仅需要处理元组的某些值,忽略的部分使用(_)来处理.

        let (justTheStatusCode, _) = http404Error

        println("The status code is (justTheStatusCode)")

        // prints "The status code is 404

      访问元组的独立元素值,也可以使用索引.元组的索引是以0开始:

        println("The status code is (http404Error.0)")

        // prints "The status code is 404"

        println("The status message is (http404Error.1)")

        // prints "The status message is Not Found”

      在元组定义的时候,可以对每个元素进行命名:

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

      如果给元素进行了命名,可以通过这个元素的名字来访问它们的值:

        println("The status code is (http200Status.statusCode)")

        // prints "The status code is 200"

        println("The status message is (http200Status.description)")

        // prints "The status message is OK”

      在接收函数的返回值时,元组是非常有用的.一个返回网页的函数可能需要返回(Int,String)类型的元组来描述网页获取成功或者失败.通过返回两个不同的值,每个值的类型也不同的元  组,函数可以提供更多的输出信息,这样要比它只能返回单一类型的一个单一值更有效.

      注意点:

      临时将相互关联的值组合起来,元组是非常有效的.但不适合用来创建复杂的数据类型.如果你要保存一个超出局部范围的全局的数据,使用类或者结构体要更加适合.

     

  • 相关阅读:
    redis应用场景之文章投票设计思路
    Redis存储的5种数据结构
    v+=e 不等价于 v=v+e
    WebMagic
    指针函数和函数指针的区别
    为什么说StringBuilder不安全?
    sql注入
    Autowired报错处理
    SpringBoot入门最简单的一个项目示例
    MVC中Cookie的用法(二)---CookieHelper
  • 原文地址:https://www.cnblogs.com/caios/p/3789991.html
Copyright © 2020-2023  润新知