typestar

Iteradores propios en Lua

El for genérico maneja cualquier función que devuelva lo próximo.

-- The generic for drives any iterator function you write.
local function torch_burn(hours)
  local left = hours
  return function()
    if left > 0 then
      left = left - 1
      return hours - left, left
    end
  end
end

for hour, remaining in torch_burn(4) do
  print(string.format("Hour %d: %d hours of light left",
    hour, remaining))
end

Cómo funciona

  1. La fábrica devuelve una clausura que guarda las horas restantes.
  2. Devolver nil termina el bucle — ese es todo el protocolo.
  3. Dos retornos por paso alimentan dos variables del bucle.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
317
Tokens
57
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 53 segundos.

Escribe este fragmento

Paso 3 de 3 en Clausuras; paso 16 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →