0Pricing
Swift Academy · レッスン

for-inでコレクションを反復処理する

enumeratedとzipを使って、配列、辞書、セットをループ処理します。

「for-inでコレクションを反復処理する」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

`for-in`ループは、配列、辞書、Set、String、独自のカスタム型など、あらゆる`Sequence`で使用できます。ここでは、特に便利なパターンを見ていきましょう。

配列を反復処理する

```swift let fruits = ["apple", "banana", "cherry"] for fruit in fruits { print(fruit) } // apple, banana, cherry ``` 各要素は、1回の反復処理の間`fruit`にバインドされます。

enumerated() — インデックスと値

インデックスと値の両方が必要な場合は、`.enumerated()`を使用します。 ```swift for (index, fruit) in fruits.enumerated() { print("\(index): \(fruit)") } // 0: apple // 1: banana // 2: cherry ``` `enumerated()`は、`(offset, element)`タプルのシーケンスを返します。

辞書を反復処理する

辞書の反復処理では、順序が未指定の`(key, value)`タプルが生成されます。 ```swift let scores = ["Alice": 95, "Bob": 87] for (name, score) in scores { print("\(name): \(score)") } ``` 決定的な順序が必要な場合は、先にキーをソートしてください。

Setを反復処理する

Setの反復処理では、順序が未指定です。 ```swift let colors: Set = ["red", "green", "blue"] for color in colors.sorted() { print(color) } ``` アルファベット順や昇順が必要な場合は、`.sorted()`を呼び出します。

zip() — 並列反復処理

`zip()`を使うと、2つのシーケンスを並列に反復処理できます。 ```swift let names = ["Alice", "Bob", "Carol"] let scores = [95, 87, 92] for (name, score) in zip(names, scores) { print("\(name): \(score)") } ``` `zip`は、短いほうのシーケンスの長さで停止します。

反復中のフィルタリング:where節

`where`節を追加すると、要素をその場でスキップできます: ```swift for n in 1...20 where n % 3 == 0 { print(n) // 3, 6, 9, 12, 15, 18 } ``` ループ本体の中に`if`を置くよりも、すっきりと記述できます。

インデックスを使った反復

`.indices`を使うと、元のインデックス範囲にアクセスできます: ```swift var arr = [10, 20, 30] for i in arr.indices { arr[i] *= 2 } // arr is now [20, 40, 60] ``` 要素をその場で*変更*する必要がある場合に使用します。

for-inでのタプルの分解

タプルのシーケンスは、ループ内で直接分解できます: ```swift let points = [(1, 2), (3, 4), (5, 6)] for (x, y) in points { print("x=\(x), y=\(y)") } ``` 明快で簡潔なため、`.0`や`.1`の添字を使う必要がありません。

ループでの遅延シーケンス

`.lazy`を先頭に付けると、計算を遅延させ、中間配列の生成を避けられます: ```swift let total = (1...1_000_000) .lazy .filter { $0 % 2 == 0 } .prefix(5) .reduce(0, +) print(total) // 30 ``` 大きなシーケンスに対して処理を連結するとき、`.lazy`は強力です。

確認問題

配列を反復するとき、インデックスと値の両方を取得できるメソッドはどれですか?

まとめ

重要なポイント: • `for elem in collection` — 基本的な反復 • `.enumerated()` — インデックスと値のペア • `zip(a, b)` — 2つのシーケンスの並列反復 • `for x in seq where condition` — その場でのフィルタリング • `.indices` — 要素を変更するときに使用 • `.lazy` — 大きなシーケンスの処理を遅延 次は、break、continue、ラベル付き文について学びます。

よくある質問

「for-inでコレクションを反復処理する」レッスンは無料ですか?

はい。「for-inでコレクションを反復処理する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「for-inでコレクションを反復処理する」で何を学びますか?

enumeratedとzipを使って、配列、辞書、セットをループ処理します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「for-inでコレクションを反復処理する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 範囲を使ったfor-inループ
  2. whileとrepeat-whileループ
  3. for-inでコレクションを反復処理する
  4. break、continue、ラベル付き文
← Swift Academyに戻る