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

我使用 repl.it 来查看它返回了什么,出于好奇,结果发现 not nil 返回了true

为什么会这样?这是因为在 Lua 中每个东西最终都应该是 true 或 false 吗?

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

点赞
用户88888888
用户88888888

因为在转换为布尔值时,nil被视为false

2.2 Booleans

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

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

3.3 Logical Operators

逻辑运算符分别是 andornot。和控制结构一样,所有逻辑运算符都将 falsenil 视为 false,将任何其他值视为 true

2017-12-24 18:22:13