哥伦布

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 程序 输出:

posted @   者諹  阅读(1505)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示