怎么解决重复导入 lua

怎么解决重复导入 lua,第1张

使旅空用require替换loadstring和loadfile

require的散手时候会对package.loaded这个table进行维护

在require的拆掘瞎过程中 值会为true require结束后 会为一个table 即你要加载的整个env

所以多次require 不会重复导入lua

其实这个可大做察以直接用dofile()(有的版本没有dofile就只能用loadfile来实现了)的。因为你索引的不是同一个目录下的。所以应该这样:dofile("..//b//string.lua")。看清一开始是滚茄两个点,表示上一层目录。

如果非要用require(),就必须把string.lua做成一个模块,这在《lua程序设计》里第15章:模块与包胡宏有解释。

既然你的那个文件里只有一条语句,那就用dofile就好

一个lua文件是作为一个代码搜孙颤块(chunk)存在的,其实质就是凯陆一个函数,那么最简单的,在一个外部lua文件中写一段代码,然后在主lua文件中用dofile调用,外部文件的代码块就会执行了。

[python] view plaincopyprint?

--outter.lua:

print("Hello world!")

--main.lua:

dofile("outer.lua")

--outter.lua:

print("Hello world!")

--main.lua:

dofile("outer.lua")

那么执行结果显世败然就是输出“Hello world!”。

有时候不想立即执行外部文件,而是想从外部文件中引入一个函数,在某个合适的时候执行。那么可以在外部文件中定义一个函数并返回,然后执行。

[c-sharp] view plaincopyprint?

--outter.lua:

function sayHello()

print("Hello world!")

end

return sayHello

--main.lua:

func = dofile("outter.lua")

func()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12297942.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存