Swift中文教程(三)流程式控制制

來源:互聯網
上載者:User

Swift用if和switch編寫條件控制語句,用for-in,for,while和do-while編寫迴圈。條件控制語句和迴圈語句中,小括弧是可選的,但花括弧包住這個迴圈體是必須的:

let individualScores = [75, 43, 103, 87, 12]  var teamScore = 0  for score in individualScores {      if score > 50 {          teamScore += 3      } else {          teamScore += 1      }  }  teamScore

If語句

在if語句中,條件必須是布爾值,也就是說,if score { ... }這個條件句是錯誤的,不是一個隱式地與0比較的條件。

你可以結合if和let來防止這種值的丟失狀況。這些值意味著可選,這種可選值要麼包含一個具體的值要麼包含一個nil(空)來指示它的值是不存在的。在值的類型後面加上?號來表示它為可選即可:

var optionalString: String? = "Hello"optionalString == nil         var optionalName: String? = "John Appleseed"var greeting = "Hello!"if let name = optionalName {      greeting = "Hello, \(name)"}

練習:

將 optionalName 賦值為 nil 。會發生什嗎?添加一個 else 條件句在 optionalName 為 nil 時設定一個不同的值試試。

一旦可選值為nil,條件為false時,花括弧裡的代碼塊將被跳過,否則,可選值將是未封裝的並賦值給一個常量,這會讓未封裝的值在代碼塊範圍中可見。

Switch語句

Switch語句支援任何資料類型而且支援多種比較,不限於整型或相等測試:

let vegetable = "red pepper"switch vegetable {  case "celery":      let vegetableComment = "Add some raisins and make ants on a log."case "cucumber", "watercress":      let vegetableComment = "That would make a good tea sandwich."case let x where x.hasSuffix("pepper"):      let vegetableComment = "Is it a spicy \(x)?"default:      let vegetableComment = "Everything tastes good in soup."}

練習:

移除default語句,看看會報什麼錯?

執行滿足條件的case語句後,程式自動跳出,所以,無需給每個case語句加上break。

For-In語句

使用for-in迴圈在字典中遍曆時,提供一對名字來使用字典中的每一個名值對(如下例的number--numbers):

let interestingNumbers = [      "Prime": [2, 3, 5, 7, 11, 13],      "Fibonacci": [1, 1, 2, 3, 5, 8],      "Square": [1, 4, 9, 16, 25],  ]  var largest = 0  for (kind, numbers) in interestingNumbers {      for number in numbers {          if number > largest {              largest = number          }      }  }  largest

查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/extra/

練習:

在上例中,添加一個變數來跟蹤哪一個number是最大的,即最大的值是?

While語句

使用while語句來重複執行一個代碼塊直到條件改變。條件可以置於句末以便代碼至少執行一次:

var n = 2  while n < 100 {      n = n * 2  }  n         var m = 2  do {      m = m * 2  } while m < 100  m

For語句

for迴圈中可以使用索引值,利用..(兩個點)或者明確聲明一個初始值,條件句或增量來限制索引的範圍,下面的兩個迴圈意思一樣:

var firstForLoop = 0  for i in 0..3 {      firstForLoop += i  }  firstForLoop         var secondForLoop = 0  for var i = 0; i < 3; ++i {      secondForLoop += 1  }  secondForLoop

使用 ..(兩個點)限制索引的範圍並忽略最高值,而用 ...(三個點) 構造的範圍則包含兩個值。

作者:cnblogs Joe.Huang

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.