Filter
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 24 di 56.
filter accetta una closure predicato e restituisce un nuovo array contenente solo gli elementi per i quali la closure ha restituito true.
let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Il risultato mantiene l'ordine originale. Il tipo del risultato corrisponde al tipo di input: non avviene alcuna trasformazione, solo una selezione.
filter si concatena naturalmente con map:
let big = nums
.filter { $0 > 2 }
.map { $0 * $0 }
print(big) // [9, 16, 25, 36]Leggi ogni catena dall'alto verso il basso, proprio come una pipeline. Ogni passaggio produce un nuovo array; nulla modifica l'originale.
Sfida
FacileLeggi due righe di input:
- Un elenco di numeri interi separati da virgole
- Un numero intero
min
Stampa, su righe separate:
- I numeri interi strettamente maggiori di
min, uniti con,(oppure vuoto se nessuno soddisfa il criterio) - I quadrati dei numeri interi che soddisfano il criterio, uniti con
, - Il conteggio dei numeri interi che soddisfano il criterio
Usa filter + map in catena. Non iterare due volte sull'input.
Con 1,5,2,8,3,7 nella riga 1 e 4 nella riga 2, l'output è:
5,8,7
25,64,49
3Provalo tu
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!
// TODO: applica filter > min una sola volta, poi usa map per ottenere i quadrati; stampa entrambi, poi conta
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Conteggio e indiciMaiuscole, minuscole e rimozione degli spaziRicerca nelle stringheSuddivisione e unioneSostituzione di sottostringheRiepilogo - Verifica del nome utente4Insiemi
Creare insiemiUnione e intersezioneDifferenza e differenza simmetricaSottoinsieme e sovrainsiemeRiepilogo - Filtro per tag7Progetto - Tracciatore di abitudini
Panoramica del progettoSegna come completato10Progetto - Motore di quiz
Panoramica del progettoPorre domande2Intervalli e passi
Intervalli chiusi e semiapertiPassoMetodi degli intervalliIntervalli in switchRiepilogo - Griglia del calendario5Funzioni di ordine superiore Parte 1
MapFilterReduceConcatenare map, filter e reduceRiepilogo - Statistiche sulle paroleEsercitati da solo: Playground Swift