__index en Lua
Las búsquedas perdidas van al respaldo: herencia en una línea.
-- __index sends missed lookups elsewhere: inheritance in one line.
local defaults = { hp = 20, speed = 4, torch = true }
local goblin = setmetatable({ hp = 7 }, { __index = defaults })
print("Goblin hp (own): " .. goblin.hp)
print("Goblin speed (inherited): " .. goblin.speed)
-- Writing touches only the table itself, never the fallback.
goblin.speed = 6
print("Goblin speed (now own): " .. goblin.speed)
print("Defaults untouched: " .. defaults.speed)
Cómo funciona
setmetatable(t, { __index = defaults })cablea la cadena.- Las lecturas caen a través;
goblin.speedviene de defaults. - Las escrituras quedan en la tabla misma — el respaldo no cambia.
Palabras clave y builtins usados aquí
localprintsetmetatable
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 457
- Tokens
- 77
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 71 segundos.
Paso 1 de 3 en Metatablas; paso 17 de 27 en Fundamentos del lenguaje.