require使用


require "mod"

mod.foo()

-------------------

local m=require "mod"

m.foo()

--------------------

package.preload   --预先加载的库表

找不到找:

loadfile   

loadlib



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


require "foo"

package.loaded["foo"] = nil

require "foo"  --可以再次加载


查找路径:

package.path

package.cpath   


luaopen_<模块名>

--------------

local M={}

complex=M

function M.new()

end

return complex

-----------------------

local modname="xxx"

local M={}

_G[modname]=M

package.loaded[modname]=M   --不需要return

-----------------------

local modname=complex

local M={}

_G[modname]=M

package.loaded[modname]=M

setmetatable(M,{__index=_G})

setfenv(1,M)

function add(c1,c2)     ----因为setfenv  可以省略前缀

return new(c1,c2)

end

complex.math.sin(x)  --继承_G

----------

local modnam="xxx"

local M={}

_G[modname]=M

package.loaded[modname]=M

local sqrt = math.sqrt   ---要用的函数导出来

local io=io

setfenv(1,M)

-----------

module(modname,package.seeall)  --相当于setmetatable(M,{__index=_G})

mod.sub   --会查询package.loaded  package.preload


require "a.b"   --子模块

./?.lua;/usr/local/lua/?/init.lua

./a/b.lua

/usr/local/lua/a/b/init.lua







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值