Il metodo reduce
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 62 di 78.
reduce() combina tutti gli elementi di un array in un valore: una somma, un prodotto, l'elemento più grande, una frase.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Accetta due argomenti: una funzione e un valore iniziale, qui 0. La funzione riceve il risultato ottenuto finora, chiamato accumulatore (acc), e l'elemento successivo. Ciò che restituisce diventa il nuovo accumulatore:
accinizia da00 + 1è1,1 + 2è3,3 + 3è6,6 + 4è10- dopo l'ultimo elemento,
reduce()restituisce l'accumulatore:10
Per un prodotto, parti da 1: numbers.reduce(func(acc, n): return acc * n, 1) è 24.
Senza un valore iniziale, il primo elemento è il valore iniziale e la funzione viene eseguita a partire dal secondo elemento. Questo è adatto a trovare l’elemento più grande:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Su un array vuoto senza un valore iniziale, reduce() restituisce null, quindi specifica un valore iniziale quando l’array può essere vuoto.
L’accumulatore può essere di qualsiasi tipo. Con un valore iniziale di "", questo crea una stringa con le prime lettere:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goSfida
FacileIl programma legge una riga di numeri interi separati da virgole e li memorizza nell'array numbers. Questa parte è già scritta.
Usando reduce() per ciascuno di essi, stampa tre righe:
- la somma dei numeri
- il loro prodotto
- il numero più grande (scrivi il confronto nella lambda; non chiamare
max())
C'è sempre almeno un numero. Per l'input 3,7,2,8,4, l'output è:
24
1344
8Provalo tu
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Stampa la somma, il prodotto e il numero più grande, ciascuno usando 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
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online