API de tabelas
Os utilitários de tabelas estão disponíveis em ptool.tbl e p.tbl.
Essas APIs foram projetadas para tabelas de lista densas, com chaves inteiras
contíguas começando em 1.
ptool.tbl.map
Unreleased- Introduced.
ptool.tbl.map(list, fn) transforma cada item de uma tabela de lista e retorna
uma nova lista.
list(table, obrigatório): Uma tabela de lista densa.fn(function, obrigatório): Um callback que recebe(value, index)e deve retornar um valor diferente denil.- Retorna:
table.
Comportamento:
fné chamado uma vez para cada item, em ordem.- Se
fnretornarnil, a chamada falha em vez de criar buracos no resultado. - A tabela de entrada não é modificada.
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) mantém os itens cujo resultado do callback seja
truthy e os retorna em uma nova lista densa.
list(table, obrigatório): Uma tabela de lista densa.fn(function, obrigatório): Um callback que recebe(value, index).- Retorna:
table.
Comportamento:
nilefalseremovem o item atual.- Qualquer outro valor Lua mantém o item atual.
- A tabela retornada é reindexada a partir de
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 uma ou mais tabelas de lista densas em uma
nova lista.
...(table, obrigatório): Uma ou mais tabelas de lista densas.- Retorna:
table.
Comportamento:
- Os argumentos são anexados da esquerda para a direita.
- Listas vazias são permitidas.
- As tabelas de entrada não são modificadas.
local out = p.tbl.concat({ 1, 2 }, { 3 }, {})
print(ptool.inspect(out)) -- { 1, 2, 3 }
ptool.tbl.join
Unreleased- Introduced.
ptool.tbl.join(...) é um alias de ptool.tbl.concat(...).
...(table, obrigatório): Uma ou mais tabelas de lista densas.- Retorna:
table.
local out = p.tbl.join({ "x" }, { "y", "z" })
print(ptool.inspect(out)) -- { "x", "y", "z" }
Regras de lista
ptool.tbl atualmente suporta apenas tabelas de lista densas.
- As chaves devem ser inteiras.
- As chaves devem começar em
1. - As chaves devem ser contíguas, sem buracos.
- Tabelas esparsas e tabelas no estilo dicionário geram erro.