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

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会立刻结速switch,并跳转到switch语句大括号(})后的第一行代码.

  这种方式可以用来忽略一个或者多个case.由于switch语句执行的时候,不可以有空的case,因此有时候需要忽略一个case.你可以将break语句作为case的整个执行体来忽略这个部   分;一旦switch匹配到这个case的时候,break语句会立刻结束switch的执行.

  注意点:

  一个switch case 如果只有注释,会报编译器错误.注释不是语句,也不会让case被跳过,如果要忽略这个case就要break语句.

  请看下面代码例子:

    let numberSymbol: Character = "三"  // Simplified Chinese for the number 3

    var possibleIntegerValue: Int?

    switch numberSymbol {

    case "1", "?", "一", "?":”

    possibleIntegerValue = http://www.mamicode.com/1

           case "2", "?", "二", "?":

      possibleIntegerValue = http://www.mamicode.com/2

      case "3", "?", "三", "?":

       possibleIntegerValue = http://www.mamicode.com/3

      case "4", "?", "四", "?":

      possibleIntegerValue = http://www.mamicode.com/4

    default:

        break

    }

    if let integerValue = http://www.mamicode.com/possibleIntegerValue {

        println("The integer value of \(numberSymbol) is \(integerValue).")

    } else {

        println("An integer value could not be found for \(numberSymbol).")

    }

    // prints "The integer value of 三 is 3."

  这个代码中,检查numberSymbol,是否是Latin, Arabic, Chinese, 或者 Thai 四种语言中的1至4的中的一个数字.如果匹配到了,switch的case语句就会设置一个Int?类型的可选变量  possibleIntegerValue来处理对应的值.

  在switch语句执行完之后,代码中使用可选绑定来确定这个值是否找到.变量possibleIntegerValue有一个隐式初始化的nil值,因此如果可选绑定能够判定成功,possibleIntegerValue变  量在switch中的四个case必须设置一个实际的值.

  上面代码例子中,罗列出所有可能的字符是不实际的.因此,deafult的case语句处理所有不匹配的情况,default的case没有执行任何操作,只是使用了break语句来结束switch执行.

Fallthrough (降落)

  在Swift中,switch语句里,不会从一个case执行后再处理后面的一个case,一直到底部case.相反地,整个switch语句在第一个匹配的case完成之后就会结束执行,在C语言的switch中,  通过给每个case中插入break来防止这种掉落执行.Swift避免这种默认的降落执行是为了更加准确和可预见性,这样可以避免错误的执行多个case.

  如果你真的需要像C语言那也顺序降落的执行case,你可以使用关键字fallthrough.

  下面的代码例子使用关键字fallthrough来创建一个数字的文本描述:

    let integerToDescribe = 5

    var description = "The number \(integerToDescribe) is"

    switch integerToDescribe {

    case 2, 3, 5, 7, 11, 13, 17, 19:

         description += " a prime number, and also"  

        fallthrough

    default:

        description += " an integer."

    }

    println(description)

    // prints "The number 5 is a prime number, and also an integer.”

  注意点:

  关键字fallthrough不会检测switch的case条件,它仅降落的执行.像C语言中的那样,从一个case代码执行完后,直接执行下一个case代码块.