Swift中文教程(三)--流程控制
Swift用if和switch編寫條件控制語句,用for-in,for,while和do-while編寫循環。條件控制語句和循環語句中,小括號是可選的,但花括號包住這個循環體是必須的:
1 let individualScores = [75, 43, 103, 87, 12] 2 var teamScore = 0 3 for score in individualScores { 4 if score > 50 { 5 teamScore += 3 6 } else { 7 teamScore += 1 8 } 9 } 10 teamScore
If語句
?
在if語句中,條件必須是布爾值,也就是說,if score { ... }這個條件句是錯誤的,不是一個隱式地與0比較的條件。
你可以結合if和let來防止這種值的丟失狀況。這些值意味著可選,這種可選值要么包含一個具體的值要么包含一個nil(空)來指示它的值是不存在的。在值的類型后面加上?號來表示它為可選即可:
var optionalString: String? = "Hello" optionalString == nilvar optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName {greeting = "Hello, \(name)" }練習:
將 optionalName 賦值為 nil 。會發生什么?添加一個 else 條件句在 optionalName 為 nil 時設置一個不同的值試試。
一旦可選值為nil,條件為false時,花括號里的代碼塊將被跳過,否則,可選值將是未封裝的并賦值給一個常量,這會讓未封裝的值在代碼塊作用域中可見。
Switch語句
?
Switch語句支持任何數據類型而且支持多種比較,不限于整型或相等測試:
1 let vegetable = "red pepper" 2 switch vegetable { 3 case "celery": 4 let vegetableComment = "Add some raisins and make ants on a log." 5 case "cucumber", "watercress": 6 let vegetableComment = "That would make a good tea sandwich." 7 case let x where x.hasSuffix("pepper"): 8 let vegetableComment = "Is it a spicy \(x)?" 9 default: 10 let vegetableComment = "Everything tastes good in soup." 11 }練習:
移除default語句,看看會報什么錯?
執行滿足條件的case語句后,程序自動跳出,所以,無需給每個case語句加上break。
For-In語句
?
使用for-in循環在字典中遍歷時,提供一對名字來使用字典中的每一個名值對(如下例的number--numbers):
1 let interestingNumbers = [ 2 "Prime": [2, 3, 5, 7, 11, 13], 3 "Fibonacci": [1, 1, 2, 3, 5, 8], 4 "Square": [1, 4, 9, 16, 25], 5 ] 6 var largest = 0 7 for (kind, numbers) in interestingNumbers { 8 for number in numbers { 9 if number > largest { 10 largest = number 11 } 12 } 13 } 14 largest練習:
在上例中,添加一個變量來跟蹤哪一個number是最大的,即最大的值是?
While語句
?
使用while語句來重復執行一個代碼塊直到條件改變。條件可以置于句末以便代碼至少執行一次:
?
1 var n = 2 2 while n < 100 { 3 n = n * 2 4 } 5 n 6 7 var m = 2 8 do { 9 m = m * 2 10 } while m < 100 11 m?
For語句
?
for循環中可以使用索引值,利用..(兩個點)或者明確聲明一個初始值,條件句或增量來限制索引的范圍,下面的兩個循環意思一樣:
1 var firstForLoop = 0 2 for i in 0..3 { 3 firstForLoop += i 4 } 5 firstForLoop 6 7 var secondForLoop = 0 8 for var i = 0; i < 3; ++i { 9 secondForLoop += 1 10 } 11 secondForLoop使用?..(兩個點)限制索引的范圍并忽略最高值,而用?...(三個點)?構造的范圍則包含兩個值。
?
謝謝,Swifter-QQ群:362232993,同好者進~?
?
?
?
?
?
?
?
?
posted on 2014-06-04 09:47 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lonelyxmas/p/3767212.html
總結
以上是生活随笔為你收集整理的Swift中文教程(三)--流程控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win2003的IIS無法使用,又一次安
- 下一篇: 哪种代理适合用于Web数据采集