Menu
Coddy logo textTech

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)                       // 10

Il 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, *)              // 24

reduce 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!"
challenge icon

Sfida

Facile

Leggi una singola riga di input: un elenco di numeri interi separati da virgole. Usando reduce per ciascuno, stampa tre righe:

  1. La somma
  2. Il prodotto
  3. 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
8

Provalo tu

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: somma, prodotto e max tramite reduce
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift