Lua 学习笔记(4)编译、执行与错误
程序员文章站
2022-03-14 11:00:07
...
Lua 学习笔记(4)编译、执行与错误
《Lua程序设计》
编译
- dofile:执行文件
- loadfile:加载lua代码块,只编译,不加载,结果为一个函数返回。
function dofile(filename)
local f = assert(loadfile(filename))
return f()
end
- 如果需要多次运行一个文件,只需调用一次
loadfile
,多次调用返回结果即可。 - loadstring:从一个字符串中读取代码。
f = loadstring("i = i + 1") --f 是一个函数
i = 33
local i = 0
f(); print(i) -- 34,处理的是全局的i
f(); print(i) -- 35
g = function() i = i + 1 end
g(); print(i) -- 1,处理的是局部i
- load:读取器函数(reader function),可以分多次返回一个程序块,会反复调用,直到返回nil。一般只有程序块不在文件中,或程序快过大无法放入内存时使用。
检查某一平台师傅支持动态链接机制:运行
print(package.loadlib("a","b"))
,观察其结果,如果不存报告在指定文件,那么就说明该平台有这机制。
错误
print "enter a number:"
n = assert(io.read("#number"),"错误输入!")
-- pcall: protected call, 受保护的调用
if pcall(function ()
--受保护的代码
end) then
--常规代码
else
--错误处理的代码
end
print(debug.traceback) --构建错误消息调用栈
print(debug.debug()) --检查错误原因