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()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)