【lua】package.seeall作用

经常会在某些lua文件中的第一行写

module(..., package.seeall)

其实这是为了防止污染全局变量,模块名以当前文件名命名,返回当前模块提供的函数和变量等构成的表。

简单的说:

--a.lua

module (..., package.seeall)
global_num = 9527
function func()
...
end

其他文件引用a.lua 必须带a.才能访问,例如

local moda = require ('a') --产生全局变量a(a.lua文件名决定), 表类型, moda = _G.a = require('a')
local num = moda.global_num --访问moda模块'全局变量' 
moda.func() --调用moda模块'全局函数'

其实a中的global_num 和 func 已经不算是全局变量了,可以使用_G.global_num去验证。

好处是各个模块可以使用相同的变量和函数名,不会相互覆盖。

posted on 2015-07-08 01:43  低俗公子  阅读(1006)  评论(0)    收藏  举报

导航