0Pricing
Swift Academy · Lezione

Funzioni di ordine superiore: map, flatMap, compactMap

Trasformare sequenze senza mutazioni usando le funzioni per le collezioni di Swift.

Funzioni di ordine superiore: map, flatMap, compactMap è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Benvenuto

Le funzioni di ordine superiore accettano o restituiscono altre funzioni. La libreria delle collection di Swift si basa su di esse: `map`, `flatMap`, `compactMap`, `filter`, `reduce`.

map — trasformare ogni elemento

```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 — trasformare e appiattire

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

compactMap — trasformare e scartare i nil

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

Passare riferimenti a funzioni

```swift func double(_ n: Int) -> Int { n * 2 } let result = [1,2,3].map(double) // [2,4,6] ``` I riferimenti a funzioni possono sostituire i literal delle closure.

Concatenare funzioni di ordine superiore

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

flatMap sugli optional

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

Funzione di ordine superiore personalizzata

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

sorted(by:) come HOF

```swift let words = ["banana","apple","cherry"] let sorted = words.sorted { $0.count < $1.count } // ["apple","banana","cherry"] ``` `sorted(by:)` accetta una funzione comparatore.

Pratica: elaborare i dati degli utenti

```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"] ```

Verifica rapida

Che cosa fa `compactMap` che il normale `map` non fa?

Riepilogo

Punti chiave: • `map`: trasforma ogni elemento • `flatMap`: trasforma e appiattisce i risultati annidati • `compactMap`: trasforma e scarta i nil • Passi direttamente i riferimenti a funzioni: `.map(String.init)` • Concatenali per creare pipeline di dati chiare Successivo: composizione di funzioni e pipeline.

Domande Frequenti

La lezione «Funzioni di ordine superiore: map, flatMap, compactMap» è gratuita?

Sì — il testo completo di «Funzioni di ordine superiore: map, flatMap, compactMap» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Funzioni di ordine superiore: map, flatMap, compactMap»?

Trasformare sequenze senza mutazioni usando le funzioni per le collezioni di Swift. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Funzioni di ordine superiore: map, flatMap, compactMap»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Funzioni pure e progettazione senza effetti collaterali
  2. Funzioni di ordine superiore: map, flatMap, compactMap
  3. Composizione di funzioni e pipeline
  4. Sequenze lazy per l’efficienza
← Torna a Swift Academy