Resumen - Tablas de solo lectura
Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy. Lección 23 de 54.
Desafío
FácilEscribe una función makeReadOnly que reciba original y devuelva una versión de solo lectura de la tabla.
Crea una tabla proxy con una metatabla que permita leer de la tabla original, pero impida cualquier modificación.
Lógica:
- Crea una tabla proxy vacía
- Crea una metatabla con
__indexestablecido en la tabla original (para permitir la lectura) - Añade
__newindexa la metatabla sin ninguna acción (para bloquear las modificaciones) - Asocia la metatabla a la tabla proxy mediante
setmetatable() - Devuelve la tabla proxy
Parámetros:
original(tabla): La tabla que se protegerá de las modificaciones
Devuelve: Una tabla proxy que proporciona acceso de solo lectura a la tabla original (tabla)
Pruébalo tú mismo
function makeReadOnly(original)
-- Escribe el código aquí
end
Todas las lecciones de Lógica y flujo de control
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje4Introducción a las Metatablas
¿Qué es una Metatabla?setmetatable y getmetatableEl metamétodo __indexEl metamétodo __newindexEl metamétodo __tostringMetamétodos aritméticos - Parte 1Metamétodos aritméticos - Parte 2Resumen - Tablas de solo lectura2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altasPractica por tu cuenta: Compilador de Lua online