lua学习笔记之编译、运行及错误

1、编译

dofile和loadfile加载文件。loadfile仅仅编译代码块,并且返回编译后的代码块作为函数。

loadfile在出错时返回nil和错误信息,并且可以加载一次,调用结果多次。

load与loadfile相似,从函数或者字符串读取代码块,不是从文件

f = load("i = i + 1")
i = 0
f(); print(i)
f(); print(i)

输出:
1
2

加载并且调用使用load(s)(),如果出现错误,会返回nil,并且返回错误信息"attempt to call a nil value",如果需要详细的错误信息,可以使用assert(load(s))()

load没有词法作用域,使用全局作用域的。

i = 32
local i = 0

f = load("i = i + 1; print(i)")
g = function() i = i + 1; print(i)  end
f()
g()

输出:
33
1

lua将任意独立的代码块视为匿名变参函数的函数体。比如load("a=1")相当于

function (...) a = 1 end

2、预编译代码

使用luac来预编译代码。比如 lua -o prog.lc prog.lua,然后执行使用lua prog.lc

load和loadfile接受预编译代码。

3、错误

使用error函数来抛出错误。

assert函数也可以抛出错误,第一个参数不为false,则返回这个参数,否则会抛出错误。第二个参数表示错误信息。

4、错误处理及异常

处理错误使用pcall函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kgduu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值