Swiftのループ構文をまとめてみました。
forループ
// 普通のCスタイルなループ
for var i = 0 ; i < 10 ; i++ {
// do something
NSLog("for statement i:\(i)")
}
// Rangeを使った for-in ループ
// "..<"で終端-1までの数値範囲を示すことができる
for i in 0..<10 {
// 0〜9でループ
NSLog("for-in statement i:\(i)")
}
// "..." の時は終端の数値も含める
for i in 0...10 {
// 0〜10でループ
NSLog("for-in statement2 i:\(i)")
}
次はwhileを使ったループ
// whileループ
// ごく一般的な書き方ですね。
var counter = 0
while counter < 3 {
// do something
NSLog("while statement counter:\(counter)")
counter++
}
// do-whileも一般的な文法
counter = 3
do {
// 最初の1回は無条件で実行される
NSLog("do-while statement counter:\(counter)")
counter++
} while counter < 3
Swiftのループは break、continue にも対応しています。
// nilはスキップ(continue)して999で終了(break)しています
var total = 0
let list:Array<Int?> = [1,2,nil,4,5,6,-1,999]
for v in list {
if let intVal = v {
if (intVal == 999) {
break
}
total += intVal
}
else {
continue
}
}
NSLog("total: \(total)") // total: 17
ラベル付きのループにも対応しています。
[ラベル名]: for
のようにループの前にコロンで区切ってラベルを定義します。
let programmers = [
("まさし",["サボりぐせ","C#","java"]),
("ひろし",["Swift","Oracle","VPN"])
]
// ラベル付きのループ
programmersLoop: for (name,skills) in programmers {
for skill in skills {
if (skill == "サボりぐせ") {
NSLog("%@さん、あなたは帰ってください。",name)
// 外側のループに対してcontinue
// 便利!
continue programmersLoop
}
NSLog("%@さん、あなた %@も出来るんですね!",name,skill)
}
}
これは便利ですね。
この例ではforにラベルを付けているけど、whileでももちろんOK