Lua Module

来源:互联网 发布:win8动态桌面软件 编辑:程序博客网 时间:2024/05/18 03:30

一个Lua模块的数据结构使用一个Lua值(通常是Lua表或者Lua函数),一个Lua模块代码就是一个会返回这个Lua值得代码块

常规写法

    local M = {}    local modelName = ...    _G[modelName] = M    setmetatable(M,{__index = _G})    setfenv(1,M)    return M    --package.seeall让原来的_G依然有效    --等效于setmetatable(M,{__index = _G})    module(...,package.seeall)

package.seealll

1. 破坏了模块的高内聚,是的模块可以读写全局属性 例如xxx.os2. 污染了全局环境变量,使得没有引用它的文件也能调用filename模块的方法    local M = {}    local mt = {__index = M}    function M.new()        return setmetatable({},mt)    end    return M
0 0