Clausuras en Lua
Una función captura los locales de alrededor, vivos entre llamadas.
-- A closure captures the locals around it, alive between calls.
local function make_counter(label)
local seen = 0
return function()
seen = seen + 1
return label .. " #" .. seen
end
end
local kills = make_counter("skeleton")
local finds = make_counter("relic")
print(kills())
print(kills())
print(finds())
print(kills())
Cómo funciona
make_counterdevuelve una función que aún sostieneseen.- Cada contador devuelto es dueño de su propio upvalue.
- Las llamadas se intercalan sin interferencia entre los dos.
Palabras clave y builtins usados aquí
endfunctionlocalprintreturn
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 322
- Tokens
- 64
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 55 segundos.
Paso 1 de 3 en Clausuras; paso 14 de 27 en Fundamentos del lenguaje.