我使用repl.it查看它返回的内容,仅仅是为了好奇,结果证明
not nil
返回true
为什么?是因为在Lua中,一切都应该是真的还是假的?
Repl.it link:https://repl.it/repls/SanePastelHarrier
答案 0 :(得分:6)
因为转换为布尔值时nil
为false
:
2.2布尔
布尔类型有两个值
false
和true
,它们代表传统的布尔值。但是,布尔没有 持有条件值的垄断:在Lua中,任何值都可以代表a 条件。条件(例如控制结构中的条件) 将false
和nil
都视为false
,将其他任何内容视为true
。 请注意,与其他一些脚本语言不同,Lua认为它们都是零 条件测试中的空字符串为true
。
not
将其参数视为布尔值:
3.3逻辑运算符
逻辑运算符为
and
,or
和not
。与控制结构一样,所有逻辑运算符都同时考虑false
和nil
作为false
,以及其他任何内容true
。