控制流
使用if和switch構建條件語句,使用for-in,for,while和repeat-while構建迴圈語句。括號括主條件語句或迴圈變數是可選的。但是擴主主語句是必須的。
for score in individualscores else
// if (score) > 50 else
}print(teamscore)
在if語句中,條件語句必須是布林表示式--這意味著 if score 這樣的語句是錯誤的,不能隱式的和零比較。
你可以使用if和let一起工作在值可能丟失的情況下。這些值被描繪成可選的。乙個可選的值可以是有效值也可以是nil用來指出他的值丟失了。在變數型別的後面加上乙個問號(?)標識他的值是可選的。
練習 把optionalname改為nil。greeting的值是什麼?加乙個else分枝為optionalname
為nil的情況下設定乙個不同的greeting。
如果可選值為nil,條件語句為false所以大括號內的**被跳過。否則可選值被解析並且賦給let後面的常量,當然要保證**塊中解析值是有效的。
開關語句可以支援任何型別和多種多樣的比較操作--並不只限於整數和等值校驗。
// let vegetable = "red *****"
// let vegetable = "celery"
// let vegetable = "cucumber"
// let vegetable = "watercress"
let vegetable = "watercress peper"
switch vegetable 練習
嘗試刪掉default分支語句。你會得到什麼錯誤?
注意如何在匹配一部分條件下,使用let給常量賦值的模式。
在執行玩匹配的switch case語句後,**跳出switch語句。不會執行下乙個case,所以,這裡不用在每個case後顯式寫break來指明結束switch語句。
你可以使用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 = 0
for (kind, numbers) in interestingnumbers }}
print(largest) 練習
新增另外乙個變數跟蹤哪乙個種類的數字是最大的,或者最大的值是什麼。
使用while迴圈乙個**塊直到條件改變。迴圈條件也可以在最後,並確保迴圈語句至少執行一次。
var n = 2
while n<100
print(n)
var m = 2
repeat while m < 100
print(m)
你可以在迴圈中保留乙個索引--要麼使用,,《來確定索引範圍要麼顯式初始化變數,條件,增量。下面兩個迴圈做了同樣的事:
var firstforloop = 0
for i in 0..<4
println(firstforloop)
var secondforloop = 0
for var i = 0; i < 4; ++i
println(secondforloop)
var thirdforloop = 0
for i in 2...4
println(thirdforloop)
使用..《得到的範圍不包括最大值,使用...得到的範圍包括兩頭的值.
Swift2學習 Swift概覽6 協議和擴充套件
協議和擴充套件 用protocol宣告乙個協議。protocol exampleprotocol mutating func adjust 類,列舉和結構體都可以接受協議。class class exampleprotocol var a class a.adjust let adescriptio...
Swift2學習 Swift概覽4 物件和類
物件和類 使用class並在其後面跟著類名來建立乙個類。類中常量或者變數已同樣的方法宣告,除非他是類的上下文 類之外 同樣的,方法和類以同樣的方式宣告。class shape 練習 通過let新增乙個常量屬性,並新增另外乙個方法來使用這個引數。通過在類名之後放置一對圓括號來建立乙個類物件。通過小數點...
從零學習Swift 2
定義let 定義常量,一經賦值不允許再修改 var 定義變數,賦值之後仍然可以修改 常量 定義常量並且直接設定數值 let x 20 常量數值一經設定,不能修改,以下 會報錯 x 30 使用 型別 僅僅只定義型別,而沒有設定數值 let x1 int 常量有一次設定數值的機會,以下 沒有問題,因為 ...