包内全部是局部变量,再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_packagereturn _G[_REQUIREDNAME] -- 返回是个好习惯
