本文主要是介绍Lua基础之dofile、loadfile、require的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
loadfile
特点:只编译,不运行。
一个lua文件是作为一个代码块(chunk)存在的,其实质就是一个函数,loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码 ,并且loadfile一旦出错不会抛出错误信息而是返回错误代号。一旦发生错误,loadfile会返回nil和错误信息,这样我们就可以自定义错误处理。
想要通过loadfile加载并执行,可以用如下代码实现:
local f = assert(loadfile(filename))
f()
dofile
特点:编译和运行。
dofile每一次读入文件都会编译并且执行,它与loadfile的关系可以用如下代码表示:
function dofile (filename)local f = assert(loadfile(filename))return f()
end
如果loadfile失败assert会抛出错误。
require
特点:只编译运行一次
require和dofile一样会编译和运行。只是require在第一次加载文件的时候,会执行里面的代码 ,但第二次加载文件则不会重复执行了。那是因为它会自动缓存已经加载过的文件,不会重复加载,除非把缓存去掉。
参考链接:
https://www.cnblogs.com/slysky/p/5369223.html
这篇关于Lua基础之dofile、loadfile、require的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!