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
for-in 文で配列 (array) をループする
続いて、Swift の for-in を使って、配列をループしてみましょう。
配列の要素を全て print するには次のようにします。
let names = ["Tanaka", "Suzuki", "Sato", "Yamada"]
for name in names {
print(name)
}
実行結果は次のようになります。前の要素から順番に出力されていますね。
Tanaka
Suzuki
Sato
Yamada
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 では、配列は要素の順番を持った型ですが、辞書は順番を持たない型なので、ループされる要素の順番が、要素を追加した順番になるとは限りません。
今回の実行結果も定義した時の順番とは違っていますね。
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-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-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-in 文 についてご説明しました。