0Pricing
Swift Academy · Lezione

filter e predicati

Selezioni gli elementi che soddisfano una condizione.

filter e predicati è 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.

Che cos'è filter?

filter mantiene soltanto gli elementi per i quali una closure, detta predicato, restituisce true.

  • La closure restituisce un valore Bool
  • Il tipo degli elementi rimane invariato
  • Il risultato è un nuovo array, eventualmente più piccolo

Un semplice filter

Mantenere soltanto i numeri pari:

let numbers = [1, 2, 3, 4, 5, 6]
let evens = numbers.filter { $0 % 2 == 0 }
print(evens)  // [2, 4, 6]

Filtrare le stringhe

Mantenere soltanto le parole più lunghe di tre caratteri:

let words = ["hi", "swift", "go", "filter"]
let long = words.filter { $0.count > 3 }
print(long)  // ["swift", "filter"]

Che cos'è un predicato?

Un predicato è semplicemente una funzione che accetta un valore e restituisce un Bool. filter chiama il predicato una volta per ogni elemento e mantiene il valore quando il predicato restituisce true.

Dare un nome a un predicato

I predicati possono essere memorizzati e riutilizzati per rendere il codice più leggibile:

let isPositive: (Int) -> Bool = { $0 > 0 }
let data = [-2, 5, -1, 8]
print(data.filter(isPositive))  // [5, 8]

Combinare le condizioni

Usi gli operatori booleani all'interno del predicato:

let nums = [1, 2, 3, 4, 5, 6, 7, 8]
let picked = nums.filter { $0 % 2 == 0 && $0 > 4 }
print(picked)  // [6, 8]

Filtrare le struct

Filtrare una collection di oggetti modello in base a una proprietà:

struct Product { let name: String; let price: Int }
let items = [Product(name: "Pen", price: 2), Product(name: "Bag", price: 40)]
let cheap = items.filter { $0.price < 10 }
print(cheap.map { $0.name })  // ["Pen"]

filter e map

Rispondono a domande diverse: filter sceglie quali elementi mantenere, mentre map modifica ogni elemento. Anche i tipi del risultato sono diversi:

let n = [1, 2, 3, 4]
print(n.filter { $0 > 2 })  // [3, 4]  (subset, same type)
print(n.map { $0 > 2 })     // [false, false, true, true]

Concatenare filter e map

Filtri prima per ridurre il lavoro, poi trasformi:

let nums = [1, 2, 3, 4, 5, 6]
let result = nums
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
print(result)  // [4, 16, 36]

Contare senza conservare gli elementi

Se serve soltanto un conteggio, filter(...).count funziona, ma count(where:) evita di creare un array:

let votes = [true, false, true, true]
let yes = votes.filter { $0 }.count
print(yes)  // 3

Filtrare un dizionario

Applicare filter a un dizionario produce un dizionario contenente le coppie chiave/valore corrispondenti:

let ages = ["Ann": 30, "Bo": 17, "Cy": 22]
let adults = ages.filter { $0.value >= 18 }
print(adults.keys.sorted())  // ["Ann", "Cy"]

Verifica rapida

Che cosa deve restituire il predicato di filter?

Riepilogo

Ha imparato a filtrare:

  • filter mantiene gli elementi per i quali il predicato è true
  • Un predicato è una qualsiasi funzione che associa un valore a un Bool
  • Il tipo degli elementi viene preservato; l'array può ridursi
  • Può combinare le condizioni con && / || e concatenare il risultato con map

Prossimo argomento: reduce.

Domande Frequenti

La lezione «filter e predicati» è gratuita?

Sì — il testo completo di «filter e predicati» è 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 «filter e predicati»?

Selezioni gli elementi che soddisfano una condizione. 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 «filter e predicati»?

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. map e compactMap
  2. filter e predicati
  3. reduce e reduce(into:)
  4. flatMap e concatenamento
← Torna a Swift Academy