| この記事の要点 |
|
Swift の繰り返し構文一覧
Swift はモダンなループ構文を採用し、C 言語ライクな for (i=0;i<10;i++) 形式は Swift 3 で廃止されました。現代の Swift では for-in と while / repeat-while の 3 形態だけ覚えれば十分です。
1. for-in と範囲演算子
もっとも基本的な書き方です。範囲演算子と組み合わせて回数指定ループを作ります。
// 閉区間(1, 2, 3, ..., 10)
for i in 1...10 {
print(i)
}
// 半開区間(0, 1, 2, ..., 9)
for i in 0..<10 {
print(i)
}
// インデックスを使わないなら _ で受ける
for _ in 1...5 {
print("Hello")
}
2. 配列・辞書を回す
let array = ["aaa", "bbb", "ccc"]
// 値だけ
for v in array {
print(v)
}
// インデックス付きで回す(enumerated)
for (i, v) in array.enumerated() {
print("\(i): \(v)")
}
// 辞書はタプルで取れる
let dict = ["red": 1, "blue": 2, "green": 3]
for (key, value) in dict {
print("\(key) = \(value)")
}
3. 逆順・ステップ指定
// 逆順(10, 9, ..., 1)
for i in (1...10).reversed() {
print(i)
}
// 2 ずつ(0, 2, 4, 6, 8)
for i in stride(from: 0, to: 10, by: 2) {
print(i)
}
// 末端を含めたいときは through
for i in stride(from: 0, through: 10, by: 2) {
print(i) // 0, 2, 4, 6, 8, 10
}
// 浮動小数点も OK
for x in stride(from: 0.0, to: 1.0, by: 0.25) {
print(x) // 0.0, 0.25, 0.5, 0.75
}
4. while と repeat-while
回数が事前に決まらないときに使います。while は先頭判定、repeat-while(他言語の do-while 相当)は末尾判定なので必ず 1 回は実行されます。
// while(先頭判定)
var n = 0
while n < 5 {
print(n)
n += 1
}
// repeat-while(末尾判定 = 最低 1 回実行)
var m = 10
repeat {
print(m)
m -= 1
} while m > 0
5. break と continue
for i in 1...10 {
if i == 3 { continue } // 3 をスキップ
if i == 7 { break } // 7 で終了
print(i) // 1, 2, 4, 5, 6
}
多重ループからの脱出(ラベル付き break)
outer: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 {
break outer // 外側ループごと抜ける
}
print("\(i)-\(j)")
}
}
6. forEach と for-in の違い
関数型風に書きたいときは Sequence の forEach も使えますが、forEach の中では break / continue / return(外側関数からの早期 return)が使えません。離脱が必要なら for-in を選びます。
[1, 2, 3].forEach { print($0) } // OK
// [1, 2, 3].forEach { if $0 == 2 { break } } // ❌ コンパイルエラー
7. where 句で条件絞り込み
for-in に where を付けると、条件を満たす要素だけ処理できます。if + continue を書く代わりに 1 行で済みます。
for i in 1...10 where i.isMultiple(of: 2) {
print(i) // 2, 4, 6, 8, 10
}
サンプル: 配列の中身を表示
// 基本的な繰り返し文
for i in 1...10 {
print(i)
}
// 配列の中身を表示
var array = ["aaa", "bbb", "ccc"]
for val in array {
print(val)
}
出力結果
1
2
3
4
5
6
7
8
9
10
aaa
bbb
ccc
まとめ
| 構文 | 使いどころ |
|---|---|
for i in 1...n | 回数が決まっている繰り返し |
for v in array | コレクションの全要素処理 |
for (i, v) in array.enumerated() | インデックスも必要なとき |
stride(from:to:by:) | ステップ・小数・逆順を細かく制御 |
while | 条件が満たされる間続ける |
repeat-while | 最低 1 回は実行したい |
break / continue / ラベル | 途中離脱・スキップ・多重脱出 |
関連
- Swift — 親カテゴリ
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38