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 a y value of \(y)")

    case let (x, y):

     println("somewhere else at (\(x), \(y))")

    }

    // prints "on the x-axis with an x value of 2”

  这个switch语句判断点是否在x-轴,在Y轴,或者其他地方.

  三个case语句中都定义了常量x和y,它们临时的接收元组anotherPoint中的一个或者两个值.第一个case中,”case (let x, 0)匹配任何一个Y值是0的点,并且赋值这个点的x值给临时常  量x,同样的,第二个case中,case (0, let y)匹配任意x值为0的点,并赋值这个点的y值给临时常量y.

  一旦临时常量被定义,它们就可以在case代码块中使用.

  注意,这个switch语句没有默认的default case.最后的case, case let (x, y)定义了一个元组,它匹配其余值的所有情况,因此在swithc语句最终不要要个default case.

  在上面的代码例子中,x和y是通过使用关键字let定义的常量,因为不需要在case代码块中修改它们的值,但是它们也可以使用var关键字定义为变量.如果这样做的话,一个临时变量将会  被创建并且初始化相应的值.这个变量的任何改变都局限在case的代码体中.

Where

  一个switch case可以使用where 检查附加条件:

    let yetAnotherPoint = (1, -1)

    switch yetAnotherPoint {

    case let (x, y) where x == y:

        println("(\(x), \(y)) is on the line x == y")

    case let (x, y) where x == -y:

       println("(\(x), \(y)) is on the line x == -y")

    case let (x, y):

       println("(\(x), \(y)) is just some arbitrary point")

    }

    // prints "(1, -1) is on the line x == -y”

      

  这个switch语句判断点是否在绿色的线(where x == y),是否在紫色的线(where x == -y),或者其他.

Control Transfer Statements (控制跳转语句)

  控制跳转语句会改变代码执行的顺序,代码从一个地方跳至另一个地方.在Swift中有四种控制跳转语句:

    continue

    break

    fallthrough

    return

  这里会先讲述control, break 和 fallthrough语句,return将在函数的部分说明.

Continue

  continue语句会告诉循环停止本次正在进行的循环,并开始下一次循环,它一直没有离开循环.

  注意点:

  在for-condition-increment循环中,调用continue语句后,仍会执行incermen的计算.循环本身仍会继续执行,只是这次循环中的代码被忽略了.

  下面的代码例子演示了从一个小写字符串中移除所有元音和空格来创建一个加密的短句:

    let puzzleInput = "great minds think alike"

    var puzzleOutput = ""

    for character in puzzleInput {

     switch character {

       case "a", "e", "i", "o", "u", " ":

      continue

     default:

        puzzleOutput += character

      }

    }

    println(puzzleOutput)

    // prints "grtmndsthnklk”

  上面的代码中,调用continue关键字,当匹配到一个元音或空格,就会结束本次循环并开始下一次遍历循环.这样可以确保switch代码块仅匹配(或忽略)元音和空格.

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

时间: 2024-12-25 13:43:43

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

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文档初译与注解三十八)---266~271页(第六章-- 闭包)

Trailing Closures(尾闭包) 如果你需要将一个闭包表达式作为参数传递给一个函数,而且参数的位置刚刚好是函数的最后一个,你这个闭包表达式又很长,那么使用尾闭包就显得非常有效(有用). 尾闭包是一个写在跟随函数()外面(或后面)的闭包表达式: func someFunctionThatTakesAClosure(closure: () -> ()) { // function body goes here }  // here's how you call this function

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

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

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文档初译与注解二十四)---163~170页(第三章完--第四章 流程控制)

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

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