求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

「模块:No globals」修訂間的差異檢視原始碼檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
mediawiki1>Antigng
(ep:修正错误翻译)
(导入1个版本)
 
(未顯示同一使用者於中間所作的 1 次修訂)
行 2: 行 2:
 
function mt.__index (t, k)
 
function mt.__index (t, k)
 
if k ~= 'arg' then
 
if k ~= 'arg' then
error(' 尝试读取空全局变量:' .. tostring(k), 2)
+
error('Tried to read nil global ' .. tostring(k), 2)
 
end
 
end
 
return nil
 
return nil
行 8: 行 8:
 
function mt.__newindex(t, k, v)
 
function mt.__newindex(t, k, v)
 
if k ~= 'arg' then
 
if k ~= 'arg' then
error(' 尝试写入全局变量:' .. tostring(k), 2)
+
error('Tried to write global ' .. tostring(k), 2)
 
end
 
end
 
rawset(t, k, v)
 
rawset(t, k, v)
 
end
 
end
 
setmetatable(_G, mt)
 
setmetatable(_G, mt)

於 2019年6月5日 (三) 07:12 的最新修訂

This module causes an error if any nil global is read or if any global is written to, with the exception of arg. To use, add require('Module:No globals') to the top of the module using it. The arg variable is excluded because it is necessary for Scribunto's require function to work properly. (See the Scribunto source code here.)


local mt = getmetatable(_G) or {}
function mt.__index (t, k)
	if k ~= 'arg' then
		error('Tried to read nil global ' .. tostring(k), 2)
	end
	return nil
end
function mt.__newindex(t, k, v)
	if k ~= 'arg' then
		error('Tried to write global ' .. tostring(k), 2)
	end
	rawset(t, k, v)
end
setmetatable(_G, mt)