load (chunk [, chunkname [, mode [, env]]])该函数加载一个chunk,如果没有错误,则返回一个函数。如果传入chunk的值是一个字符串,则就加载这个字符串;如果传入chunk的值是一个函数,则这个函数必须返回一个字符串,并且load会一直调用这个函数,直到这个函数返回空字符串或nil,load会把每次函数的返回结果连接起来作为chunk去加载。
loadfile ([filename [, mode [, env]]])该函数类似于load,但是从文件filename或标准输入(若filename为空)中活动chunk加载。
dofile ([filename])读取文件filename的内容,并把它作为lua的chunk执行。如果没传入参数,则从标准输入中读取执行内容。返回值跟chunk执行后返回的值相同。如果出现错误,dofile会把错误信息传递给它的调用者。也就是说,dofile在无保护模式下执行。注意该函数不同于loadfile,loadfile只是返回一个函数,并不会执行,并且出现错误时,loadfile会返回一个错误信息,而不会传递给它的调用者。总之、loadfile会从一个文件中加载Lua代码块,但不会运行代码,只是编译代码,然后将编译结果从一个函数返回。而dofile除了编译代码外,还会运行返回的结果。
loadstring (string [, chunkname])该函数通用类似于load,它等价于给load函数传递字符串做作为参数。为了加载和运行一个字符串,可以这些写:
assert(loadstring(s))()
注意该函数在Lua5.2被删除了,因为它完全可被load替代。
参考资料
《Lua程序设计》(第二版)
http://www.lua.org/manual/5.2/manual.html
原文地址:http://blog.csdn.net/maximuszhou/article/details/44964049