Swift には、コードブロックを一定の回数実行するループが 2 種類あります。

  • forin ループは、シーケンスの各項目に対してコードブロックを実行します。
  • for ループは、ループ終了までカウンターを増加させ、指定の条件に一致するまでコードブロックを実行します。

for-in

数値の範囲や、配列内の値、文字列内の文字のようなシーケンスを繰り返し処理するために、forin ループを使用します。

次の例は、5 の段の初めのいくつかを出力しています。

for index in 1...5 {
    print("\(index) times 5 is \(index * 5)")
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25

このシーケンスは、閉範囲演算子 (...) を利用し、1 から 5 を含む範囲の数値を繰り返しています。index の値は、範囲の最初の数値 (1) に設定され、ループ内のコードが実行されています。このケースでは、ループ内のコードは 1 行で、index の現在値に対応する 5 の段の値を出力しています。コード実行後、index の値は範囲の次の値 (2) に更新され、再び print(_:separator:terminator:) 関数が呼び出されます。この処理は、範囲の最後に達するまで継続します。

上の例では、index は定数の値で、ループの各繰り返しの初期処理で自動的に設定されます。そのため、使用する前に宣言する必要はありません。let キーワードによる宣言の必要は無く、ループ宣言に含まれる形で暗に宣言されています。

シーケンスの各値が必要無い場合、変数名の代わりにアンダースコア (_) を使って値を無視することができます。

let base = 3
let power = 10
var answer = 1
for _ in 1...power {
    answer *= base
}
print("\(base) to the power of \(power) is \(answer)")
// "3 to the power of 10 is 59049" と出力

この例は、ある数値を別の数値でべき乗した値(このケースでは 310 乗)を算出しています。最初の値 13 の 0 乗)の 3 による乗算を、1 から 10 までの閉範囲を利用して 10 回繰り返しています。この計算は、ループ時のカウンター値を必要とせず、単に正しい回数分ループを実行するだけです。ループ変数の代わりにアンダースコア記号 (_) を使用することで、個々の値が無視され、ループ時の現在値にアクセスできなくなります。

配列内を繰り返し処理するために、forin ループを使用します。

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    print("Hello, \(name)!")
}
// Hello, Anna!
// Hello, Alex!
// Hello, Brian!
// Hello, Jack!

キーと値のペアにアクセスするために、辞書内を繰り返し処理することもできます。辞書内の各項目が、繰り返し処理時に (key, value) のタプルで返され、forin ループ内で使用するための明示的な定数名で (key, value) タプルのメンバーを分解することができます。次の例では、辞書のキーは定数 animalName に、辞書の値は定数 legCount に分解されています。

let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
for (animalName, legCount) in numberOfLegs {
    print("\(animalName)s have \(legCount) legs")
}
// ants have 6 legs
// cats have 4 legs
// spiders have 8 legs

Dictionary 内の項目は、挿入されたのと同じ順で繰り返し処理されるわけではありません。Dictionary の内容はそもそも順序を持っておらず、繰り返し処理時に取得される順序を保証しません。配列と辞書についての詳細は、Collection Types を確認してください。


Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.