Retour à la leçonMission
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.