Avanzado
Procedimientos como valores
Pasar procedimientos a otros procedimientos con mapear, filtrar, reducir y ordenar.
Un procedimiento es un valor como cualquier otro: se guarda en variables, listas y diccionarios, y se le pasa a otros procedimientos.
variable números = [3, 8, 1, 6]
procedimiento es_par(n) {
regresa n mod 2 == 0
}
imprimir(mapear(números, procedimiento(n) { regresa n * 10; }))
imprimir(filtrar(números, es_par))
imprimir(reducir(números, procedimiento(total, n) { regresa total + n; }, 0))
imprimir(alguno(números, es_par), todos(números, es_par))
imprimir(buscar(números, procedimiento(n) { regresa n > 5; }))
imprimir(ordenar(números, procedimiento(a, b) { regresa a > b; }))| Procedimiento | Qué hace |
|---|---|
mapear(lista, f) | Lista nueva con f(x) de cada elemento |
filtrar(lista, f) | Los elementos para los que f(x) es verdadero |
reducir(lista, f, inicial) | Junta todo en un valor, empezando con inicial |
alguno(lista, f) | verdadero si f(x) lo es para al menos un elemento |
todos(lista, f) | verdadero si f(x) lo es para todos |
buscar(lista, f) | El primer elemento con f(x) verdadero, o nulo |
ordenar(lista, va_antes) | Lista nueva ordenada; va_antes(a, b) responde "¿va a antes que b?" |
Procedimientos que recuerdan
Un procedimiento recuerda las variables del lugar donde se creó:
procedimiento crear_contador() {
variable cuenta = 0
regresa procedimiento() {
cuenta++
regresa cuenta
}
}
variable siguiente = crear_contador()
siguiente()
siguiente()
imprimir(siguiente())En un diccionario
variable calculadora = {
"suma": procedimiento(a, b) { regresa a + b; },
"resta": procedimiento(a, b) { regresa a - b; },
}
imprimir(calculadora.suma(1, 3), calculadora.resta(5, 2))