Menu
CoddyTech

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

Accetta 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:

  • acc inizia da 0
  • 0 + 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) # 9

Su 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], "")) # go
challenge icon

Sfida

Facile

Il 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:

  1. la somma dei numeri
  2. il loro prodotto
  3. 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
8

Provalo 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()
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: Compilatore GDScript online