Il metodo map
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 60 di 78.
Una funzione di ordine superiore è una funzione che accetta un'altra funzione come argomento. Gli array ne hanno diverse e map() è la prima.
map() richiama una funzione su ogni elemento di un array e restituisce un array nuovo con i risultati, nello stesso ordine:
func square(n):
return n * nvar numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)[1, 4, 9, 16, 25]Passa la funzione usando il suo nome, senza parentesi: map(square) passa la funzione, mentre map(square()) proverebbe a chiamarla subito. map() la chiama poi una volta per ogni elemento: 1 diventa 1, 2 diventa 4, 3 diventa 9 e così via.
Per un calcolo breve, una lambda ti evita di definire una funzione separata:
var squares = numbers.map(func(n): return n * n)Il nuovo array ha le stesse dimensioni dell'originale e numbers non cambia. I risultati possono essere di un tipo diverso da quello degli elementi:
var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))[5, 4, 6]map() restituisce un semplice Array, anche quando lo chiami su un array tipizzato come Array[int]. Memorizzare il risultato in una variabile Array[int] blocca il programma con un errore, quindi memorizzalo in una variabile non tipizzata o in un Array.
split() restituisce un PackedStringArray, che non ha map(). Per prima cosa, trasformalo in un Array: Array("1,2,3".split(",")).map(func(s): return int(s)) restituisce [1, 2, 3].
Sfida
FacileScrivi una funzione chiamata convert_to_uppercase che accetta un array di stringhe, strings, e restituisce un nuovo array con ogni stringa in maiuscolo.
Usa map() con una lambda, senza cicli. Ad esempio, convert_to_uppercase(["hello", "world"]) restituisce ["HELLO", "WORLD"].
I test chiamano direttamente convert_to_uppercase(). Non chiamarla e non stampare nulla.
Provalo tu
func convert_to_uppercase(strings: Array[String]):
# Scrivi il codice qui
pass
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