5.控制流

  Swift提供了多种流程控制结构,包括可以多次执行任务的while循环,基于特定条件选择执行不同代码分支的ifguardswitch语句,还有控制流程跳转到其他代码的breakcontinue语句。

  Swift 还增加了for-in循环,用来更简单地遍历数组(array),字典(dictionary),区间(range),字符串(string)和其他序列类型。

  Swift 的switch语句比 C 语言中更加强大。在 C 语言中,如果某个 case 不小心漏写了break,这个 case 就会贯穿至下一个 case,Swift 无需写break,所以不会发生这种贯穿的情况。case 还可以匹配更多的类型模式。

1.For-In 循环

  • swift使用for-in循环来遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。
for index in 1...5
{
    print("\(index) times 5 is \(index * 5)");
}

//如果不需要知道区间序列内每一项的值,可以使用下划线(_)替代变量名来忽略对值的访问
for _ in 1...5
{
    print("Hello");
}

数组、字典的遍历

2.While 循环

  while循环运行一系列语句直到条件变成false。这类循环适合使用在第一次迭代前迭代次数未知的情况下。Swift 提供两种while循环形式:

  1. while循环,每次在循环开始时计算条件是否符合;
  2. repeat-while循环,每次在循环结束时计算条件是否符合。 
var start = 0;
let end = 10;
var diceRoll = 0;
while start < end
{
    print(start);
    start += 1;
}

start = 0;

repeat
{
    print(start);
    start += 1;
}while start < end

3.条件语句

  • 根据特定的条件执行特定的代码通常是十分有用的,例如:当输入的值太大或太小时,向用户显示一条消息等。
  • Swift 提供两种类型的条件语句:if语句和switch语句。通常,当条件较为简单且可能的情况很少时,使用if语句。而switch语句更适用于条件较复杂、可能情况较多且需要用到模式匹配(pattern-matching)的情境。

 

//IF
let temperatureInFahrenheit = 90;
if temperatureInFahrenheit <= 32
{
    print("It's very cold. Consider wearing a scarf.");
}
else if temperatureInFahrenheit >= 86
{
    print("It's really warm. Don't forget to wear sunscreen.");
}
else
{
    print("It's not that cold. Wear a t-shirt.");
}

//Switch基础用法
let someCharacter: Character = "e";
switch someCharacter
{
case "a", "e", "i", "o", "u":
    print("\(someCharacter) is a vowel");
case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m",
     "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z":
    print("\(someCharacter) is a consonant");
default:
    print("\(someCharacter) is not a vowel or a consonant");
}
//说明:
//1.不需要在 case 分支中显式地使用break语句
//2.一个 case 也可以包含多个模式,用逗号把它们分开;
//3.每一个 case 分支都必须包含至少一条语句。

//Switch区间匹配
let approximateCount = 62;
switch approximateCount
{
case 0:
    print("no");
case 1 ..< 5:
    print("a few");
case 5 ..< 12:
    print("several");
case 12 ..< 100:
    print("dozens");
case 100 ..< 1000:
    print("hundreds");
default:
    print("many");
}

//Switch元组匹配
let somePoint = (1, 1);
switch somePoint
{
case (0, 0):
    print("(0, 0) is at the origin");
case (let x, 0):  //值绑定
    print("(\(somePoint.0), 0) is on the x-axis, x value of \(x)");
case (0, _):
    print("(0, \(somePoint.1)) is on the y-axis");
case (-2...2, -2...2):
    print("(\(somePoint.0), \(somePoint.1)) is inside the box");
default:
    print("(\(somePoint.0), \(somePoint.1)) is outside of the box");
}
//说明:使用下划线(_)来匹配所有可能的值

4.控制转移语句

   控制转移语句改变代码的执行顺序,通过它可以实现代码的跳转。Swift 有五种控制转移语句:

  1.  continuecontinue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
  2.  breakbreak语句会立刻结束整个控制流的执行。
  3.  fallthroughfallthrough关键字不会检查它下一个将会落入执行的 case 中的匹配条件。fallthrough简单地使代码执行继续连接到下一个 case 中的执行代码,这和 C 语言标准中的switch语句特性是一样的。
  4.  return
  5.  throw
posted @ 2016-07-15 16:52  LeeGof  阅读(231)  评论(0编辑  收藏  举报