Recapitulação — Tabela Somente para Leitura
Parte da seção Lógica e Fluxo do Journey de Lua da Coddy. Lição 23 de 54.
Desafio
FácilEscreva uma função makeReadOnly que receba original e retorne uma versão somente leitura da tabela.
Crie uma tabela proxy com uma metatabela que permita a leitura da tabela original, mas impeça quaisquer modificações.
Lógica:
- Crie uma tabela proxy vazia
- Crie uma metatabela com
__indexdefinido como a tabela original (para permitir a leitura) - Adicione
__newindexà metatabela sem nenhuma ação (para bloquear modificações) - Anexe a metatabela à proxy usando
setmetatable() - Retorne a tabela proxy
Parâmetros:
original(tabela): A tabela a ser protegida contra modificações
Retorna: Uma tabela proxy que fornece acesso somente leitura à tabela original (tabela)
Experimente você mesmo
function makeReadOnly(original)
-- Escreva o código aqui
end
Todas as lições de Lógica e Fluxo
1Iteração avançada de tabelas
Iterando com pairs()Iterando com ipairs()pairs() vs. ipairs()Revisão - Ficha de personagem4Introdução às Metatabelas
O que é uma Metatabela?setmetatable e getmetatableO Metamétodo __indexO Metamétodo __newindexO Metamétodo __tostringMetamétodos Aritméticos — Parte 1Metamétodos Aritméticos — Parte 2Recapitulação — Tabela Somente para Leitura2Mais funções da biblioteca table
table.concat()Construção de tabelas e unpack()table.sort()Ordenação personalizada com funçõesRevisão - Placar de pontuações máximasPratique por conta própria: Compilador de Lua online