zoukankan      html  css  js  c++  java
  • Welcome to Swift (苹果官方Swift文档初译与注解二十四)---163~170页(第三章完--第四章 流程控制)

    Mutability of Collections (可变集合)

      字典和数组都是在一个集合里储存多个值.如果你创建数组或字典后赋值给一个变量,那么这个集合就是可变的( mutable).这就意味着你在创建这个集合之后,依然可以改变这个集合的  大小,添加元素到集合里或者删除已有的元素.相反地,如果你创建的数组或者字典赋值给一个常量,那么这个集合就是不能修改的,也就是说字典或者数组是不可变的(immutable)

      对于字典,不可变就意味着你不能替换里面已有的键值对,一个不可变的字典在它一创建出来就是不可以改变的.

      对于数组,不可变与字典有一些轻微的不同,虽然依然是不允许修改数组的大小的任何操作,但是允许你对已经有的值重新设置新值.这使得在Swift中,数组类型大小固定后仍然有较高的  执行效率.

      数组的可变性对于怎样修改或者赋值一个数组实例也是依然有效的.

    第四章

    Control Flow (流程控制)

      Swift提供了与C语言相似的流程控制结构.这些包括for和while循环;if和switch语句执行不同分支代码;以及像break和continue语句来在代码中实现跳转.

      除了传统的for循环之外,Swift增加了for-in循环,这使得遍历数组,字典,范围和其他序列更加容易.

      Swift的switch语句也比C语言中的更加强大和精确.在Swift中,switch的每个case语句不会再掉落到下一个case中,这样避免了像C语言中缺少了break会造成的错误.case可以匹配许  多不同模式类型,包括范围匹配,元组,或者某种指定类型.在switch的case中匹配的值可以绑定给一个在case体中的临时常量或变量,并且每个case中复杂的匹配条件可以使用where  分支语句.

    For Loops (For循环)

      一个for循环是反复某些次数的执行一组语句.Swift中提供了两种for循环:

      • for-in 在一个范围,序列,集合中执行语句处理每个元素.  
      • for-condition-increment 执行一组语句知道指定的条件符合.典型的是使用在每次循环后使用增量.  

    For-In

      你可以使用for-in循环来遍历整个集合的元素,例如数组的元素,字符串里的字符以及范围的值.

      下面的代码例子输出了五个列表:

        for index in 1...5 {

            println("(index) times 5 is (index * 5)")

        }

        // 1 times 5 is 5

        // 2 times 5 is 10

        // 3 times 5 is 15

        // 4 times 5 is 20

        // 5 times 5 is 25

      遍历集合的元素是使用了闭合范围1到5的区间.因此使用闭合范围的操作符(...).index的值在第一次的时候被设置位范围中的1,然后执行循环内部的语句.在这个例子中,循环中只有  一个语句,它输出每次循环中index的当前值.在语句执行后,index被更新为范围中的2,然后println函数被再次调用,这个过程直到条件达到范围最后的值.

      在上面的代码例子中,index是一个常量,它在每次循环遍历的时候都被自动设置范围中的值.因此它在使用之前没有进行声明定义.它在循环中被隐式的简单定义了,因此不需要使用let  关键字.

      注意点:

      常量index的存在范围仅仅限于循环内.如果你像在循环完成之后检查index的值,或者你需要让它成为变量而不是常量,你必须亲自在循环之前明确定义.

      如果你不需要范围中的每个值,你可以使用下划线(_)来代替变量:

        let base = 3

        let power = 10

        var answer = 1

        for _ in 1...power {

            answer *= base

        }

        println("(base) to the power of (power) is (answer)")

        // prints "3 to the power of 10 is 59049”

      这个代码例子计算一个数值的几次方的值(这个例子中,是3的10次方).

      在数组中使用for-in循环来遍历元素:

        let names = ["Anna", "Alex", "Brian", "Jack"]

        for name in names {

            println("Hello, (name)!")

        }

        // Hello, Anna!

        // Hello, Alex!

        // Hello, Brian!

        // Hello, Jack!

      你也可以遍历字典访问它的键值对,在遍历的时候,字典中的每个键值对都被当作一个(key, value)元组来返回,你可以在循环中使用已经命名的常量来解析(key, value)元组中的成员.下  面的例子中,字典的key被解析到常量animalName中,字典的值被解析到常量legCount中:

        let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]

        for (animalName, legCount) in numberOfLegs {

             println("(animalName)s have (legCount) legs")

        }

        // spiders have 8 legs

        // ants have 6 legs

        // cats have 4 legs

      在一个字典中的元素,不需要按照他们被写入时的顺序进行遍历.字典中的内容是无顺序的,并且遍历的所有元素的顺序不能保证是按照顺序获取的.

      除了字典和数组,你也可是用for-in来变量字符串里的每个字符:

        for character in "Hello" {

             println(character)

        }

        // H

        // e

        // l

        // l

        // o

  • 相关阅读:
    linux下删除乱码文件
    linux修改网卡延时、带宽、丢包等
    连接远程系统里的vbox虚拟机
    Linux路由功能
    关于C语言的取整函数
    新博客
    NEU1217之神风堂最少人数 自己在精度上吃了苦头
    sprintf sscanf自己应该会的小点
    【转】妙解亲和数
    redeclared as different kind of symbol
  • 原文地址:https://www.cnblogs.com/caios/p/3821058.html
Copyright © 2011-2022 走看看