Reduce
Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 25 di 56.
reduce riduce un intero array a un singolo valore. È il modo per sommare, moltiplicare, trovare un valore estremo o creare una nuova stringa o un nuovo array a partire da molti elementi.
let total = [1, 2, 3, 4].reduce(0) { acc, n in acc + n }
print(total) // 10Il primo argomento è l’accumulatore iniziale. La closure riceve l’accumulatore corrente e l’elemento successivo, quindi restituisce il nuovo accumulatore. Il valore finale dell’accumulatore è il risultato.
Per gli operatori aritmetici, Swift ti offre la forma abbreviata basata sui simboli:
[1, 2, 3, 4].reduce(0, +) // 10
[1, 2, 3, 4].reduce(1, *) // 24reduce non deve per forza restituire un numero. L’accumulatore può essere di qualsiasi tipo: decidi tu:
let sentence = ["hi", "there"].reduce("") { $0 + $1 + "!" }
print(sentence) // "hi!there!"Sfida
FacileLeggi una singola riga di input: un elenco di numeri interi separati da virgole. Usando reduce per ciascuno, stampa tre righe:
- La somma
- Il prodotto
- Il valore massimo (usa una chiusura che restituisca il maggiore dei due argomenti, non chiamare
.max())
Supponi che ci sia almeno un elemento. Per il valore massimo, puoi usare nums[0] come accumulatore iniziale e ridurre il resto dell'array.
Per l'input 3,7,2,8,4, l'output è:
24
1344
8Provalo tu
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: somma, prodotto e max tramite reduce
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