Lua的require使用
| 一.require的作用
 2.例子 (1)main.lua
  require "test"
  require "showSome"
(2)test.lua
  function CallFunc()
  //这里能调用show(),证明了_G中有show这个元素
    show()
  end
(3)showSome.lua
  function show()
    print("it is showsome")
  end
(4)testLua.cpp
int _tmain(int argc,_TCHAR* argv[])
{
    lua_State *L = luaL_newstate();
    luaL_openlibs(L);
    luaL_dofile(L,"Lua//main.lua");
    lua_getglobal(L,"CallFunc");
    lua_pcall(L,0,0);
    return 0;
}二.require的搜索模块的路径1.搜索lua文件的路径存放在变量package.path中,当lua启动后便以环境变量LUA_PATH的值来初始化这个变量,如果没有找到,则使用2中的的默认路径。如果lua还是无法找到与模块命符合的lua文件,那么它会开始找c程序库,路径储存在package.cpath中,这个变量通过环境变量LUA_CPATH来初始化。  #deine LUA_CPATH_DEFAULT  注:  三.require的返回值require “xxx” 某个模块后 1.如果该模块自身有返回值,且模块加载成功,那么require 的返回值就是该模块的返回值  4.例子 (1)main.lua
x = require "test"
function Call()
    x.show()
end
(2)test.lua
local tb = {}
function tb.show()
    print("it is ok")
end
return tb
(3)testLua.cpp
int _tmain(int argc,"Call");
    lua_pcall(L,0);
    return 0;
}四. require的实现代码function require(name)
    if not package.loaded[name] then
        local loader = findloader(name)
        if loader == nil then
            error("unable to load module" .. name)
        end
        package.loaded[name] = true
        local res = loader(name)
        if res ~= nil then
            package.loaded[name] = res
        end
    end
    return package.loaded[name]
end(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
