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()) --检查错误原因

本文深入探讨Lua语言的编译与执行机制,包括dofile与loadfile的区别,loadstring的功能,以及load如何处理大的程序块。同时,介绍了Lua中的错误处理方式,如使用assert进行错误断言,pcall进行受保护的调用,以及debug模块中的traceback和debug函数用于构建错误消息调用栈和检查错误原因。
1291

被折叠的 条评论
为什么被折叠?



