Funzioni lambda - Parte 2
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 55 di 78.
Una lambda su una sola riga può scegliere il proprio risultato con l'operatore ternario, value_if_true if condition else value_if_false:
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # AdultPer più di due casi, concatena un secondo ternario dopo else, oppure scrivi la lambda come un blocco con if e elif:
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # PassPoiché una lambda è un valore, puoi passarla a una funzione. Dichiara il parametro con il tipo Callable ed eseguila con call():
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7Una funzione con nome può essere passata allo stesso modo: scrivi il suo nome senza parentesi, come in apply_twice(double, 5).
Anche i metodi integrati accettano funzioni. sort_custom() ordina un array con una lambda che riceve due elementi e restituisce true quando il primo deve venire prima:
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]Una lambda può leggere le variabili locali che la circondano, ma ne copia i valori quando viene creata. Modificare una variabile di questo tipo in seguito non ha effetto sulla lambda e assegnarle un valore all'interno della lambda non modifica la variabile esterna.
Sfida
FacileIl programma legge un numero intero. Crea una lambda e memorizzala in una variabile denominata categorize_number. Accetta un numero e restituisce:
Positivese il numero è maggiore di0Zerose il numero è0Negativese il numero è minore di0
Chiamala con il numero che hai letto e stampa il risultato. Per l'input 10, l'output è:
PositiveProvalo tu
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# Crea la función lambda categorize_number aquí
# Llámala con number e imprime el resultado
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