<Swift>繰り返し処理
今回の記事でわかること
- for 文を使った繰り返し処理ができる
- while 文 / repeat-while 文を理解できる
- 配列や範囲を使ったループが書ける
- Swift 独自の便利な繰り返し(forEach, map)を知る
for-in 文(基本の繰り返し)
Swift の for は回数やコレクションを直接指定して回せるのが特徴です
範囲を指定して繰り返す
for i in 1...5 {
print("i = \(i)")
}
/* 出力結果
i = 1
i = 2
i = 3
i = 4
i = 5
*/
- 1…5 は「1から5まで」を意味する閉区間演算子
- ..< を使うと「未満」になります(例:1..<5 → 1, 2, 3, 4)
配列を繰り返す
let fruits = ["リンゴ", "バナナ", "ブドウ"]
for fruit in fruits {
print("フルーツ: \(fruit)")
}
/* 出力結果
フルーツ: リンゴ
フルーツ: バナナ
フルーツ: ブドウ
*/
インデックス付きの繰り返し
let animals = ["いぬ", "ねこ", "うさぎ"]
for (index, animal) in animals.enumerated() {
print("\(index)番目は \(animal)")
}
/* 出力結果
0番目は いぬ
1番目は ねこ
2番目は うさぎ
*/
enumerated() を使うと(index, 値)のペアで取り出せます
while 文
条件が true の間、処理を繰り返します
var n = 1
while n <= 3 {
print("n = \(n)")
n += 1
}
/* 出力結果
n = 1
n = 2
n = 3
*/
repeat-while 文
少なくとも1回は条件を満たしていなくても実行される繰り返し。ほかの言語でいう「do-while」に相当します
var m = 1
repeat {
print("m = \(m)")
m += 1
} while m <= 3
/* 出力結果
m = 1
m = 2
m = 3
*/
ループ制御
continue と break を使ってループを制御できます
処理 | 説明 |
---|---|
break | 今のループを終了 |
continue | 残りをスキップして次の周回へ |
for i in 1...5 {
if i == 3 {
continue // 3のときはスキップ
}
if i == 5 {
break // 5のときはループ終了
}
print(i)
}
/* 出力結果
1
2
4
*/
forEach
配列に対して繰り返し処理が書けます
let nums = [1, 2, 3]
nums.forEach { n in
print("num = \(n)")
}
/* 出力結果
num = 1
num = 2
num = 3
*/
map / filter
ちょっと追うようですが、Swift らしい書き方
let numbers = [1, 2, 3, 4, 5]
// すべて2倍にする
let doubled = numbers.map { $0 * 2 }
// 偶数だけ取り出す
let evens = numbers.filter { $0 % 2 == 0 }
print(doubled)
print(evens)
/* 出力結果
[2, 4, 6, 8, 10]
[2, 4]
*/
for-in でも書けますが、こういう関数型の書き方は実務でもよく使います