Swift の for ループ

Swift でコードを繰り返し実行する(ループする)には、for-in 文か while 文か repeat-while 文を使います。

ここでは Swift の for-in 文 についてご説明します。

Swift の for-in 文の基本

Swift の for 文は in を使って、数値の範囲、配列、辞書 (dictionary)、文字列などに対して、ひとつひとつの要素をループして、順番に何か処理を実行することができます。

基本的な for-in 文は次のような構文で書きます。

for [ループ中の現在の値が入る定数] in [ループしたい範囲や配列、辞書など] {
    ループ中に実行されるコードブロック
}

では、実際の for-in 文の使い方を例をあげてご紹介します。

for-in 文で数値の範囲を指定してループする

まず、Swift の for-in を使って、1 から 5 までのような数値の範囲でループしてみましょう。

1 から 5 というのは範囲演算子を使って 1...5 のように指定します。

for i in 1...5 {
    print("i = \(i)")
}

実行結果は次のようになります。print 文が 5 回実行されて、ちゃんとその都度 i に 1 ~ 5 が入っていますね。

i = 1
i = 2
i = 3
i = 4
i = 5

Swift の for 文 1


for-in 文で配列 (array) をループする

続いて、Swift の for-in を使って、配列をループしてみましょう。

配列の要素を全て print するには次のようにします。

let names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
for name in names {
    print(name)
}

実行結果は次のようになります。前の要素から順番に出力されていますね。

Tanaka
Suzuki
Sato
Yamada

Swift の for 文 2


for-in 文で辞書 (dictionary) をループする

次は、Swift の for-in を使って、辞書をループしてみましょう。

辞書のキーと値を全て print するには次のようにします。

for に続けて (studentID, name) のようにタプルで指定することによって、ループ中の現在の辞書の要素のキーが studentID に、値が、name に入ります。

let students = ["S001": "Yamada", "S002": "Suzuki", "S003": "Tanaka"]

for (studentID, name) in students {
    print("\(studentID): \(name)")
}

実行結果は次のようになり、辞書のキーと値が全て print されています。

S003: Tanaka
S001: Yamada
S002: Suzuki

Swift の for 文 3

ちょっと注意しないといけないのは、Swift では、配列は要素の順番を持った型ですが、辞書は順番を持たない型なので、ループされる要素の順番が、要素を追加した順番になるとは限りません。

今回の実行結果も定義した時の順番とは違っていますね。

Swift の for-in 文 で continue する

Swift の for-in 文のコードブロックの中で continue 文を使うと、コードブロック内のそれ以降のコードをスキップして、次に進ませることができます。

例えば、1 から 10 までの数値の範囲で、2 で割り切れる時は print したくない時は、次のようにできます。

for i in 1...10 {
    if i % 2 == 0 {
        continue
    }
    print("i = \(i)")
}

実行結果は次のようになり、i % 2 が 0 の時はそれ以降のコードを実行せずに次の要素にいくので、奇数のみが出力されています。

i = 1
i = 3
i = 5
i = 7
i = 9

Swift の for 文 4


Swift の for-in 文 で break する

Swift の for-in 文のコードブロックの中で break 文を使うと、そこで for 文のループを抜けることができます。

例えば、names 配列の要素の値が Sato の時に for ループを抜けるには、次のようにします。

let names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
for name in names {
    if name == "Sato" {
        break
    }
    print(name)
}

実行結果は次のようになり、name が Sato になった時に for ループを抜けているのがわかります。

Tanaka
Suzuki

Swift の for 文 5


Swift の for-in + where 文

Swift の for-in 文 に where 句を指定して、条件を満たした時だけ続くコードブロックを実行させることができます。

さきほど continue を使って、1 から 10 までの数字のうち、奇数のみを print しましたが、それを where 句を使ってやると次のようになります。

for i in 1...10 where i % 2 != 0 {
    print("i = \(i)")
}

実行結果は次のようになります。 i % 2 != 0 が true になる時のみ print が実行されていますね。

i = 1
i = 3
i = 5
i = 7
i = 9

Swift の for 文 6


以上、Swift の for-in 文 についてご説明しました。

© 2024 iOS 開発入門