0Pricing
Swift Academy · レッスン

高階関数:map、flatMap、compactMap

Swiftのコレクション関数を使い、変更せずにシーケンスを変換します。

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

ようこそ

高階関数は、ほかの関数を引数に取るか、関数を返します。Swiftのコレクションライブラリは、高階関数である`map`、`flatMap`、`compactMap`、`filter`、`reduce`を基盤としています。

map — 各要素を変換する

```swift let nums = [1,2,3,4] let squared = nums.map { $0 * $0 } // [1,4,9,16] let strs = nums.map(String.init) // ["1","2","3","4"] ```

flatMap — 変換して平坦化する

```swift let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator:" ").map(String.init) } // ["hello","world","foo","bar"] ```

compactMap — 変換してnilを除外する

```swift let mixed = ["1","two","3"] let nums = mixed.compactMap { Int($0) } // [1,3] ```

関数参照を渡す

```swift func double(_ n: Int) -> Int { n * 2 } let result = [1,2,3].map(double) // [2,4,6] ``` 関数参照は、クロージャリテラルの代わりに使用できます。

高階関数をチェーンする

```swift let total = (1...100) .filter { $0 % 2 == 0 } .map { $0 * $0 } .reduce(0, +) // sum of squares of even numbers 1-100 ```

Optionalに対するflatMap

```swift let maybeStr: String? = "42" let maybeInt = maybeStr.flatMap { Int($0) } // Optional(42) let nil2: String? = nil let also = nil2.flatMap { Int($0) } // nil ```

カスタム高階関数

```swift func applyTwice(_ f: (T) -> T, _ value: T) -> T { f(f(value)) } print(applyTwice({ $0 * 2 }, 3)) // 12 ```

HOFとしてのsorted(by:)

```swift let words = ["banana","apple","cherry"] let sorted = words.sorted { $0.count < $1.count } // ["apple","banana","cherry"] ``` `sorted(by:)`は比較関数を受け取ります。

実践:ユーザーデータを処理する

```swift struct User { var name: String; var score: Int } let users = [User(name:"A",score:80),User(name:"B",score:45),User(name:"C",score:92)] let topNames = users.filter { $0.score >= 80 }.map { $0.name }.sorted() // ["A","C"] ```

理解度チェック

通常の`map`にはない、`compactMap`の働きは何ですか?

まとめ

重要なポイント: • `map` — すべての要素を変換します • `flatMap` — 変換して、ネストした結果を平坦化します • `compactMap` — 変換して、nilを除外します • 関数参照を直接渡せます:`.map(String.init)` • チェーンによって、読みやすいデータパイプラインを構築できます 次は、関数合成とパイプラインです。

よくある質問

「高階関数:map、flatMap、compactMap」レッスンは無料ですか?

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

「高階関数:map、flatMap、compactMap」で何を学びますか?

Swiftのコレクション関数を使い、変更せずにシーケンスを変換します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「高階関数:map、flatMap、compactMap」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 純粋関数と副作用のない設計
  2. 高階関数:map、flatMap、compactMap
  3. 関数合成とパイプライン
  4. 効率化のための遅延シーケンス
← Swift Academyに戻る