Menu
CoddyTech

Funciones lambda, parte 2

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 55 de 78.

Una lambda de una sola línea puede elegir su resultado con el operador 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

Para más de dos casos, encadena un segundo ternario después de else, o escribe la lambda como un bloque con if y elif:

var grade = func(score):
	if score == 100:
		return "Perfect"
	elif score >= 60:
		return "Pass"
	return "Fail"
print(grade.call(75)) # Pass

Como una lambda es un valor, puedes pasarla a una función. Declara el parámetro con el tipo Callable y ejecútala 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 función con nombre se puede pasar de la misma manera: escribe su nombre sin paréntesis, como en apply_twice(double, 5).

Los métodos integrados también aceptan funciones. sort_custom() ordena un arreglo con una lambda que recibe dos elementos y devuelve true cuando el primero debe ir antes:

var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]

Una lambda puede leer las variables locales que la rodean, pero copia sus valores cuando se crea. Cambiar una de esas variables después no afecta a la lambda, y asignarle un valor dentro de la lambda no cambia la variable externa.

challenge icon

Desafío

Fácil

El programa lee un número entero. Crea una lambda y guárdala en una variable llamada categorize_number. Toma un número y devuelve:

  • Positive si el número es mayor que 0
  • Zero si el número es 0
  • Negative si el número es menor que 0

Llámala con el número que leíste e imprime el resultado. Para la entrada 10, la salida es:

Positive

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online