Menu
CoddyTech

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)) # Adult

Per 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)) # Pass

Poiché 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)) # 7

Una 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.

challenge icon

Sfida

Facile

Il programma legge un numero intero. Crea una lambda e memorizzala in una variabile denominata categorize_number. Accetta un numero e restituisce:

  • Positive se il numero è maggiore di 0
  • Zero se il numero è 0
  • Negative se il numero è minore di 0

Chiamala con il numero che hai letto e stampa il risultato. Per l'input 10, l'output è:

Positive

Provalo 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
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