typestar

Funciones de orden superior en Lua

map y filter son ayudantes de tres líneas sobre ipairs.

-- Higher-order helpers are three lines each in Lua.
local function map(t, f)
  local out = {}
  for i, v in ipairs(t) do out[i] = f(v) end
  return out
end

local function filter(t, keep)
  local out = {}
  for _, v in ipairs(t) do
    if keep(v) then out[#out + 1] = v end
  end
  return out
end

local hauls = { 12, 45, 3, 78, 22 }
local doubled = map(hauls, function(g) return g * 2 end)
print(table.concat(doubled, " "))
local rich = filter(hauls, function(g) return g > 20 end)
print("Big hauls: " .. table.concat(rich, ", "))

Cómo funciona

  1. map arma una tabla nueva aplicando f casilla por casilla.
  2. filter agrega con out[#out + 1] cuando la prueba pasa.
  3. Las funciones anónimas ponen la transformación en la llamada.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
514
Tokens
149
Ritmo de tres estrellas
65 tpm

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

Escribe este fragmento

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

← Anterior Siguiente →