0Pricing
Swift Academy · Lezione

Funzioni pure e progettazione senza effetti collaterali

Scrivere funzioni che restituiscono sempre lo stesso risultato a parità di input.

Funzioni pure e progettazione senza effetti collaterali è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 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 pure producono sempre lo stesso output per lo stesso input e non causano effetti collaterali. Sono il fondamento della programmazione funzionale in Swift.

Definizione di una funzione pura

Una funzione è pura se: • Lo stesso input produce sempre lo stesso output • Non presenta effetti collaterali osservabili (nessuna mutazione, operazione di I/O o modifica dello stato globale) ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } // pure ```

Esempio di funzione impura

```swift var total = 0 func addToTotal(_ n: Int) { total += n } // impure — mutates global ``` Chiamare questa funzione due volte con `5` produce risultati diversi se le chiamate avvengono in contesti differenti.

Trasparenza referenziale

Una chiamata a una funzione pura può essere sostituita dal suo risultato senza modificare il comportamento del programma: ```swift let result = add(2, 3) // same as writing 5 ```

Vantaggi delle funzioni pure

• Facili da testare: non richiedono configurazione né pulizia • Sicure da eseguire in parallelo: non usano stato condiviso • Componibili: possono essere concatenate senza preoccuparsi degli effetti collaterali • Memorizzabili nella cache: la memoizzazione è sicura

I tipi valore di Swift favoriscono la purezza

Poiché i metodi delle struct ricevono copie, tendono naturalmente verso la purezza: ```swift struct Vector { var x, y: Double } func scaled(_ v: Vector, by f: Double) -> Vector { Vector(x:v.x*f, y:v.y*f) } ```

Isolare gli effetti collaterali

Porti gli effetti collaterali ai confini del sistema: ```swift // Pure core logic: func processOrders(_ orders: [Order]) -> Invoice { ... } // Impure at the edge: func run() { let inv = processOrders(load()); save(inv) } ```

Funzioni pure e test

```swift func test() { let result = add(2, 3) assert(result == 5) // no mocks needed! } ``` Le funzioni pure non richiedono oggetti mock: basta chiamarle e verificare il risultato.

Esempio pratico

```swift func discountedPrice(base: Double, discount: Double) -> Double { base * (1 - discount) } let final = discountedPrice(base: 100, discount: 0.2) // 80.0 ```

Comporre funzioni pure

```swift func double(_ n: Int) -> Int { n * 2 } func addOne(_ n: Int) -> Int { n + 1 } let transform: (Int) -> Int = { addOne(double($0)) } print(transform(5)) // 11 ```

Verifica rapida

Quale proprietà rende una funzione facile da testare senza mock?

Riepilogo

Punti chiave: • Pura: stesso input → stesso output, senza effetti collaterali • La trasparenza referenziale consente la sostituzione • Porti gli effetti collaterali ai confini del sistema • Le funzioni pure sono facilmente testabili ed eseguibili in parallelo Successivo: funzioni di ordine superiore.

Domande Frequenti

La lezione «Funzioni pure e progettazione senza effetti collaterali» è gratuita?

Sì — il testo completo di «Funzioni pure e progettazione senza effetti collaterali» è 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 pure e progettazione senza effetti collaterali»?

Scrivere funzioni che restituiscono sempre lo stesso risultato a parità di input. 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 1 di 4.

Quanto tempo richiede la lezione «Funzioni pure e progettazione senza effetti collaterali»?

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