swift 使用if 和switch作為條件語句,使用for-in,for,while,以及repeat-while作為循環語句。在條件語句和循環語句中括號()是可選的,可以加上也可以不加,大括號在語句中是必須要加上的。
let individualScores = [75,43,103,87,12]
var teamScore = 0
for score in individualScores {
if score > 50{
teamScore +=3
}else {
teamScore +=1
}
}
print(teamScore)
在if語句中,條件中的結果必須是個布爾表達式—這就意味著像if score {...} 是錯誤的,這樣寫并不是一個與0比較大小的語句。
可以使用if和let 結合在條件語句中判斷一個變量或常量有沒有值。這個常量或變量一定是可選類型的。因為一個可選類型有可能有值也有能是nil。子可選類型名稱后面加上?標志,表明這個變量或常量是可選類型。可選類型請參照http://www.lxweimin.com/p/6b168366a2c1
var optionalString:String? = "Hello"
print(optionalString == nil)
var optionalName:String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
greeting = "Hello,\(name)"
}
如果optionalName是nil,這個判斷就是false,就會跳過去。相反,如果不為空就會把值賦給name,執行大括號的內容。
另一種方法判斷可選類型是否為空是使用空合運算符??,如果可行類型為空表達式的值就會是默認值。
let nickName:String? = nil
let fullName:String = "John Appleseed"
let informalGreeting = "Hi \(nickName ?? fullName)"
nickName??fullName 等于
(nickName != nil) ? nickName! : fullName
Switch 語句支持不同類型的數據和許多比較操作-不僅僅是整數或測試相等。
let vegetable = "red pepper"
switch vegetable {
case "celery":
print("Add some raisins and make ants on a log.")
case "cucumber","watercress":
print("Tht would make a good the sandwich.")
case let x where x.hasSuffix("pepper"):
print("Is it a spicy \(x)?")
default:
print("Everything tastes good in soup.")
}
與Objective-C 和C語言不同的是,switch 語句中的default不可以去掉,如果要去掉的話,把default換成一個包含恒成立的case語句。比如上面的例子中可以把default換成
case let x:
print("Everything tastes good in soup.")
也是可以的,因為let x 聲明了一個可以匹配余下所有值的常量。這使得switch語句已經完備了,因為不需要再寫default。
注意,case分支的模式允許將匹配的值綁定到一個臨時的常量或變量。這種行為被稱為值綁定。可以使用where語句來判斷額外的條件。
在switch語句中執行完匹配的代碼后,程序就會跳出switch語句。并不會繼續執行接下啦的case分支,因此不需要在case分支的代碼中加上break。如果你想執行完一個分支后接著執行下一個分支,可以在case分支的代碼中加上fallthrough(貫穿)。
我們可以在for-in中提供一對名稱表示Key和Value來循環一個字典。字典是組無序集合,因此它的key和value是在一種隨意順序中循環的。
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
}
}
}
print(largest)
while的條件語句可以在末尾,repeat-while至少循環了一次。
var n = 2
while n < 100 {
n = n * 2
}
print(n)
var m = 2
repeat{
m = m * 2
}while m < 100
print(m)
在一個循環中可以用范圍運算符表示范圍
var total = 0
for i in 0..<4 {
total += i
}
print(total)
..<不包括上限,使用...兩邊都包括