为什么 Lua 中的 "not nil" 返回 true?

4

我曾经使用repl.it查看其返回结果,仅出于好奇心理,结果显示not nil返回了true

这是为什么呢?是否因为在Lua中,最终所有东西都应该是true或false?

repl.it链接:https://repl.it/repls/SanePastelHarrier


2
你认为表达式 not nil 的结果是什么? - Egor Skriptunoff
1个回答

9

由于将nil转换为布尔值时,nil被视为false

2.2 布尔类型

布尔类型有两个值:falsetrue,它们代表传统的布尔值。然而,在 Lua 中,任何值都可能表示一个条件。条件语句(例如控制结构)会将falsenil视为false,其余所有值均视为true。请注意,与其他一些脚本语言不同,Lua 在条件测试中将零和空字符串均视为true

not运算符将其参数视为布尔值:

3.3 逻辑运算符

逻辑运算符包括andornot。与控制结构一样,所有逻辑运算符将falsenil视为false,其余所有值均视为true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接