[Swift] ループ制御 (繰り返し処理)

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です