Control Flow
用 if 和 switch 來做條件語句,并且用for-in,for,while,和do-while做循環,條件和循環的括號是可以不寫的,但是body外面的括號是必須寫的
1 let individualScores = [75,43,103,87,12]2 var teamScore = 03 for score in individualScores{4 if score > 50{5 temScore +=36 } else {7 tempScore +=18 }9 }
teamScore
在 if 語句中,條件必須是一個boolean 表達式,意思就是這個代碼如果是 if socre { ... }則是錯誤的,不能夠隱式和0比較
可以使用 if 和 let 來鎖定變量的值,在變量聲明類型的后面加上問號 ? 標記該變量是可選擇的
var optionalString: String?="Hello"optionalString == nil var optionaLName: String?="John Appleseed"var greeting = "hello!"if let name = optionlName { greeting = "Hello, /(name)"}
設置optionalName 為nil 看看是什么結果?
如果這個optional value為nil,則這個條件是 false 并且這個代碼節點會被跳過,在其他情況下,這個optional value賦值給 let 常量之后,這使得在if結構中的代碼可以執行
switch 支持任何類型的數據和各種各樣的操作,他們并不局限于integer類型和檢測相等,如下:
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." }
執行條件相匹配的結構塊中的代碼后,程序會退出switch語句,不會執行下一個case
你使用for-in語句遍歷字典中的項目,給他們提供一個鍵值:
let interestingNumbers = [ "PRime":[2,3,5,7,11,13] "Fibonacci": [1,1,2,3,5,8] "Square": [1,4,9,16,25]]var largest = 0for (kind, numbers) in interestingNumbers{ for number in numbers{ if(number > largest) { largest = number } }}
largest
用while來循環代碼塊,直到條件的變化,一個循環的條件可以在最后替換,從而確定少執行一次:
var n = 2while n < 100{ n = n*2}nvar m = 2do { m = m*2}while m <100m
你也可以用..來做一個范圍的集合,通過寫一個顯式的初始化索引,條件和增量,來判斷,下面兩個都是:
var firstForLoop = 0for i in 0..3{ firstForLoop += i}firstForLoopvar secondForLoop = 0for var i = 0; i<3; i++{ secondForLoop += i}secondForLoop
使用.. 做一個范圍
|
新聞熱點
疑難解答