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

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

时间: 2024-08-11 05:45:08

Welcome to Swift (苹果官方Swift文档初译与注解二十四)---163~170页(第三章完--第四章 流程控制)的相关文章

Welcome to Swift (苹果官方Swift文档初译与注解二十八)---199~208页(第四章-- 流程控制)

Value Bindings (绑定值) 在switch的case中可以绑定一个或者多个值给case体中的临时常量或者变量,这个成为绑定值. 代码样例: let anotherPoint = (2, 0) switch anotherPoint { case (let x, 0):   println("on the x-axis with an x value of \(x)") case (0, let y):   println("on the y-axis with

Welcome to Swift (苹果官方Swift文档初译与注解二十九)---209~218页(第四章-- 流程控制)

Break break语句会立刻结束整个流程控制的执行.break语句可以在switch语句或者循环语句中帮助你提前结束循环或者switch的执行. Break in a Loop Statement  (循环语句中的break) 当在循环语句中使用break,会立刻结束循环的执行,并且跳转到循环体之后的第一行代码.循环不会再遍历执行了. Break in a Switch Statement (switch语句的break) 当在switch语句中使用break,break会立刻结速switc

Welcome to Swift (苹果官方Swift文档初译与注解二十六)---181~188页(第四章-- 流程控制)

Do-While  while循环的另一个版本是do-while循环,它在判断条件之前,先执行一遍循环体,然后再次执行循环体,直到条件成为false. do-while循环的通过格式: do {   statements } while condition 我们再用蛇和梯子的例子,使用do-while循环代替while循环.其中 finalSquare, board, square, 和 diceRoll 的初始化与while循环是一样的: let finalSquare = 25 var bo

Welcome to Swift (苹果官方Swift文档初译与注解二十)---133~139页(第二章..本节完)

Unicode (Unicode码) Unicode是一种国际标准的文本编码.它的标准表中几乎包含所有语言的任意字符,并且可以通过扩展文件或者网页读写这些字符. 在Swift中,String(字符串)类型和Character(字符)类型完全兼容Unicode,而且它们也支持非Unicode码. Unicode Terminology (Unicode 术语) 每个Unicode码都可以用一个或者多个Unicode标量表示.对于一个字符来说,一个Unicode标量都是一个唯一的21位的值(或名称)

Welcome to Swift (苹果官方Swift文档初译与注解二十二)---148~153页(第三章--集合类型)

在数组的指定索引位置插入一个元素,可以调用数组的insert(atIndex:)方法: shoppingList.insert("Maple Syrup", atIndex: 0) // shoppingList now contains 7 items // "Maple Syrup" is now the first item in the list” 例子中的insert方法在数组的开始位置(索引为0)插入一个新的元素,元素的值是"Maple Syr

Welcome to Swift (苹果官方Swift文档初译与注解二十七)---189~198页(第四章-- 流程控制)

Switch 一个switch语句里包含一个值,并且用这个值与其他几个可能的匹配模式进行比较,然后根据成功匹配上的模式,执行相应的代码块.switch语句提供了比if语句更多的选项来相应多种潜 在的情况. 最简单的一个例子: switch some value to consider { case value 1:   respond to value 1 case value 2, value 3:   respond to value 2 or 3 default:   otherwise,

Welcome to Swift (苹果官方Swift文档初译与注解二十一)---140~147页(第三章--集合类型)

第三章 Collection Types (集合类型) 在Swift中,提供了两种集合类型用来存储一组值:数组和字典.数组有序的存储相同类型的值;字典存储无序的相同类型的值.字典可以通过唯一的标识(就是所说的键)来查询和访问. 在Swift中,数组和字典总是要清晰的标明他们存储数据的类型.这就意味着不可以将错误的类型插入到数组或字典中.同时也意味着你是明确了解你要遍历的数组或字典里面数据的类 型.在Swift中,集合要显式的声明类型来保证在开发中都会明确的知道它能处理的数据类型. 注意点: 在S

Welcome to Swift (苹果官方Swift文档初译与注解二十三)---154~162页(第三章--集合类型)

Dictionaries (字典) 字典像是一个容器,它可以存放很多相同类型的值.每个值都有与之关联的唯一的键,键在字典里的作用,就像是每个值的身份证标识一样.与数组中的元素不同,字典里的每个元素没有 固定的循序.当你使用字典并且要查询一个值的时候,需要使用值的标识(key)才行.这就像是你在生活里使用一本字典来查找某个单词的定义一样. 在Swift中,字典能够存储的类型需要明确定义.这与OC中的NSDictionary 类和NSMutableDictionary 类很不同,OC中它们可以使用任

Welcome to Swift (苹果官方Swift文档初译与注解三十五)---248~253页(第五章-- 函数 完)

Function Types as Return Types (函数类型作为返回值类型) 一个函数的类型可以作为另一个函数的返回值类型.可以在一个函数的返回值箭头后面写上一个完整的函数类型. 例如: 下面的例子定义了两个简单的函数,分别为stepForward 和 stepBackward.其中stepForward函数返回值比它的输入值多1,stepBackward函数返回值比它输入值少1.这两个函数的 类型都是(Int) -> Int: func stepForward(input: Int