包内全部是局部变量,再return一个包含全部局部变量的(全局)表。
以下是设计一个包package的方法:
-------------包使用方法-------------
require "API"
API.foo()
--文件名API.lua修改为NEW_API.lua,无需修改内部代码
require "NEW_API"
NEW_API.foo()
-------------package API.lua-------------
--通过_REQUIREDNAME,让包名与文件名绑定,修改文件名即修改包名
--当有包名冲突时,直接修改文件名即可。
assert(not _G[_REQUIREDNAME],"package name conflict!")
local print = print --私有化环境前把需要用到的变量本地化
local env_package = {}
setfenv(1, env_package) --定义私有环境,如此,以下所有变量都在此环境中,而不会污染全局环境。
function foo () return print("success") end
_G[_REQUIREDNAME] = env_package
return _G[_REQUIREDNAME] -- 返回是个好习惯