lua的require

本文详细介绍了Lua的require函数工作原理,包括3种加载模块的情况:1)使用package.preload加载,2)通过package.loadfile加载Lua模块,3)通过package.loadlib加载C模块。在OpenResty环境中,package.preload表非空,示例展示了require的不同加载方式。
摘要由CSDN通过智能技术生成

1. require的伪代码

function require(modname)

    if not package.loaded[modname] then

        local loadfunc = package.preload[modname]

        if loadfunc ~= nil then                -- Case 1

            package.loaded[modname] = true     -- "true" is just to mark module as loaded

            local module = loadfunc(modname);

            if module ~= nil then

                package.loaded[modname] = module           -- replace "true" with actual module

            end

        else   -- loadfunc is nil

            local fname = string.gsub(modname, "%.", "/")  -- replace "." with /; we get a file name      

            local loaded = false


            for each item in package.path do

                local luafile = string.gsub(item, "?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值