该怎样理解 Lua 逻辑运算符 and 和 or 的设计?

来源:互联网 发布:中国地图gis数据 编辑:程序博客网 时间:2024/06/07 10:13

我想这个应该是和“短路求值”相关。


因为:

a and b: 如果a为false,那么b的结果是false还是true已经不重要,因为整个表达式的结果已经是false了,所以直接返回a就可以了


同理,a or b:如果a为true,那么b的结果是false还是true已经不重要,因为整个表达式的结果已经是true了,所以直接返回a就可以了


这是一种优化,避免不必要的计算(例如b是一个较复杂的表达式,就可以省掉这个计算过程)。至于为什么返回参数本身,我想是因为类型的隐式转换,返回参数本身已经达到了和返回bool值一样的效果。
0 0
原创粉丝点击