API de tablas
Las utilidades de tablas están disponibles en ptool.tbl y p.tbl.
Estas APIs están diseñadas para tablas tipo lista densas, con claves enteras
contiguas que comienzan en 1.
ptool.tbl.map
Unreleased- Introduced.
ptool.tbl.map(list, fn) transforma cada elemento de una tabla tipo lista y
devuelve una lista nueva.
list(table, obligatorio): Una tabla tipo lista densa.fn(function, obligatorio): Un callback que recibe(value, index)y debe devolver un valor distinto denil.- Devuelve:
table.
Comportamiento:
fnse llama una vez por cada elemento, en orden.- Si
fndevuelvenil, la llamada falla en lugar de crear huecos en el resultado. - La tabla de entrada no se modifica.
local out = p.tbl.map({ 10, 20, 30 }, function(value, index)
return value + index
end)
print(ptool.inspect(out)) -- { 11, 22, 33 }
ptool.tbl.filter
Unreleased- Introduced.
ptool.tbl.filter(list, fn) conserva los elementos cuyo resultado del callback
sea truthy y los devuelve en una lista densa nueva.
list(table, obligatorio): Una tabla tipo lista densa.fn(function, obligatorio): Un callback que recibe(value, index).- Devuelve:
table.
Comportamiento:
nilyfalseeliminan el elemento actual.- Cualquier otro valor de Lua conserva el elemento actual.
- La tabla devuelta se reindexa desde
1.
local out = p.tbl.filter({ "a", "bb", "ccc" }, function(value)
return #value >= 2
end)
print(ptool.inspect(out)) -- { "bb", "ccc" }
ptool.tbl.concat
Unreleased- Introduced.
ptool.tbl.concat(...) concatena una o más tablas tipo lista densas en una
lista nueva.
...(table, obligatorio): Una o más tablas tipo lista densas.- Devuelve:
table.
Comportamiento:
- Los argumentos se agregan de izquierda a derecha.
- Se permiten listas vacías.
- Las tablas de entrada no se modifican.
local out = p.tbl.concat({ 1, 2 }, { 3 }, {})
print(ptool.inspect(out)) -- { 1, 2, 3 }
ptool.tbl.join
Unreleased- Introduced.
ptool.tbl.join(...) es un alias de ptool.tbl.concat(...).
...(table, obligatorio): Una o más tablas tipo lista densas.- Devuelve:
table.
local out = p.tbl.join({ "x" }, { "y", "z" })
print(ptool.inspect(out)) -- { "x", "y", "z" }
Reglas de lista
ptool.tbl actualmente solo admite tablas tipo lista densas.
- Las claves deben ser enteros.
- Las claves deben comenzar en
1. - Las claves deben ser contiguas, sin huecos.
- Las tablas dispersas y las tablas tipo diccionario generan errores.