Lua 学习笔记(4)编译、执行与错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l773575310/article/details/82948066

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

猜你喜欢

转载自blog.csdn.net/l773575310/article/details/82948066