Retour à la leçon
Mission

Mission : le serveur qui plante sur un simple log

Corriger une métaméthode de logging qui provoque une récursion infinie, puis exposer une table de configuration en lecture seule appelable comme une fonction.

Contexte

Un développeur veut journaliser tous les accès à une table de statistiques joueur, et écrit :

lua
local stats = setmetatable({}, {
  __index = function(t, key)
    print("lecture de la clé: " .. tostring(key))
    return t[key]     -- censé lire la vraie valeur
  end,
})

stats.kills = 5
print(stats.kills)   -- le serveur se fige, puis plante avec "stack overflow"

Le serveur RP entier se fige dès que ce module est chargé. Par ailleurs, l'équipe veut aussi une table CONFIG protégée en lecture seule, et un système ClassFactory qu'on pourrait instancier en l'appelant directement comme une fonction.