lua 中 require

本文深入探讨了Lua5.0中require函数的使用技巧,包括如何避免重复加载文件、利用global变量判断文件加载状态、以及在Lua5.1中的改进。同时介绍了如何通过一些小技巧实现文件的重复加载,以及如何利用package.loaded进行热加载,提高开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在lua 5.0 中require:

       require的另一个功能是避免重复加载同一个文件两次。Lua保留一张所有已经加载的文件的列表(使用table保存)。如果一个加载的文件在表中存在require简单的返回;表中保留加载的文件的虚名,而不是实文件名。所以如果你使用不同的虚文件名require同一个文件两次,将会加载两次该文件。比如require "foo"和require "foo.lua",路径为"?;?.lua"将会加载foo.lua两次。我们也可以通过全局变量_LOADED访问文件名列表,这样我们就可以判断文件是否被加载过;同样我们也可以使用一点小技巧让require加载一个文件两次。比如,require "foo"之后_LOADED["foo"]将不为nil,我们可以将其赋值为nil,require "foo.lua"将会再次加载该文件。

 

在lua5.1中加载的模块方面有所改进,貌似不存在全局变量_LOADED,而是放入package.loaded[模块名] 中,加载成功后判断对应package.loaded[模块名]为True,做lua的热加载方法可以将require的每个模块require进来,然后再将每个模块在package.loaded中设置为false,加载的时候只需要加载主文件就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值