Lua中,assert的作用

在看《Lua游戏开发实践指南》时,在P34中有说明assert,但是说明特少,导致自己完全不懂所以然,因此自己研究了一下。

百度百科的解释:

  • Assert(断言)编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。断言只有在Debug模式下才有效。


下面结合Lua的例子,来看看Assert具体有什么用:)

1.「没有Assert的情况」

--这里输入一个数字
print(string.format("Please Enter A Number:"))
input = io.read("*number")
print(input)

 
   

当输入的是“?”时,结果如下

可以看到,系统没有报错,可以正常运行。

2.「有Assert的情况」

--这里输入一个数字
print(string.format("Please Enter A Number:"))
input1 = assert(io.read("*number"))
print(input)

当输入的还是“?”时,结果就完全不同了

Lua中,assert的作用_第1张图片

可以看到,当有assert包围代码后,遇到错误,会抛出异常,而不会上刚刚那样。这样的用处十分之大,当项目大了之后,出错可以很好地定位到是哪里出错。


你可能感兴趣的:(游戏编程)