loadfile
和dofile
都会从文件中加载chunk
。loadfile
只编译这段chunk
,并且把编译好的chunk
以函数的形式返回,但不运行,而dofile
会运行这段chunk
。此外,出现错误时,dofile
会raise error
,而loadfile
会返回错误代码。dofile
的代码类似这样:
function dofile (filename)
local f = assert(loadfile(filename))
return f()
end
load
函数(Lua 5.1
使用loadstring
)与loadfile
类似,只不过load
是从字符串中加载chunk
,而不是从文件中。需要注意的是,load
加载的是chunk
,也就是语句,不是表达式。如果要求表达式值的话,需要在前面加上return
,这样就得到一个返回表达式值的语句。
Lua
会把任何独立的chunk
作为一个有变参参数的匿名函数的函数体。举个例子:load('a=1')
返回等价于下面的表达式:
function (...) a = 1 end