Module:No globals

De Wikirouge
Révision datée du 20 juin 2018 à 00:01 par JVarlin (discussion | contributions) (Page créée avec « local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error( "utilisation d'une variable globale, " .. tostring(k), 2 ) end return nil end... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Ce module génère une erreur si une fonction essaye de lire ou de modifier une variable globale de valeur nil. La seule exception la variable arg qui est utilisée par Scributo.

Pour utiliser ce module ajouter require( 'Module:No globals' ) au début du module.

L'utilisation de ce module permet en général de détecter plus facilement les typos dans les noms des variables.


local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' then
		error( "utilisation d'une variable globale, " .. tostring(k), 2 )
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error( "utilisation d'une variable globale, " .. tostring(k), 2 )
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)