包内全部是局部变量,再return一个包含全部局部变量的(全局)表。
    以下是设计一个包package的方法:

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