月ノ書

<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
*/

配列を繰り返す

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 でも書けますが、こういう関数型の書き方は実務でもよく使います

学習進捗

0
Would love your thoughts, please comment.x