Lua require的使用
一、require的作用
加载指定的模块,可以使用模块中的全局函数和全局数据(如表等等)
注:实际上require “xxx”后,会将xxx中的全局函数和数据放到表_G中,所以也就能访问了
二、require的返回值
require “xxx” 某个模块后
1.如果该模块自身有返回值,且模块加载成功,那么require 的返回值就是该模块的返回值
2.如果模块没有返回值,如果require加载模块成功,就返回ture
3.require 内部将返回值储存在:package.loaded表中。
(即:package.loaded[xxx]中)
三、例子
目录结构
/a.lua
require('b') -- 引入 b.lua require('test.c') -- 引入 test 目录下的 c.lua print(b) -- hello from b.lua file print(c) -- table: 011372B0 这里 c.lua 中存在一个 c 的table ,b.lua 中存在一个 c 的值 就近原则这里输出的是 c.lua 中的 c a() -- b.lua: function a -- b 方法是 local 的 访问时会报错 attempt to call a string value (global 'b') -- print(b()) local function a( ... ) -- body print("a.lua:","function a") end a() -- a.lua: function a 这里同样说明就近原则 c:c4() -- c.lua: function c4 c1() -- c.lua: funtion c1 c3() -- c.lua: funtion c1 c.lua: funtion c2
/b.lua
b = "hello from b.lua file" c = 1 -- 被引用的使用会执行 print("b.lua be require") function a( ... ) -- body print("b.lua:","function a") end -- 外部不能访问 local 修饰的值 和方法 local function b( ... ) -- body print("b.lua:","function b") end
/test/c.lua
-- 被引用的使用会执行 print("c.lua be require") c = {} function c1( ... ) -- body print("c.lua:","funtion c1") end local function c2( ... ) -- body print("c.lua:","funtion c2") end function c3( ... ) -- body c1() c2() a() -- b.lua: function a 这里没有访问到比较近的 a.lua 中的 a 方法 说明 local 外部是不能访问到的 end function c:c4( ... ) -- body print("c.lua:","function c4") end
运行 a.lua 程序 输出: