我无法理解表达式""==true
和""==false
两者如何评估为false
.
在 lua 解释器和 ilua 中尝试以下操作会产生相同的输出:
> =""==true
false
> =""==false
false
或执行以下操作:
print(""==true)
print(""==false)
print(""==nil)
输出
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
false
false
false
>
另一个例子:
> =""~=true
true
> =""==false
false
运行以下代码时:
if "" then -- if ""==true
print "was true"
end
if not "" then -- if ""==false
print "was not true"
end
输出是(似乎不一致)
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
was true
>
正如预期的那样,根据 Lua FAQ 声明
类 C 语言将 0 视为等价于 false,但对于 Lua 而言并非如此。只有显式的 false 或 nil 等效于 false。如有疑问,请明确条件,例如 if val == nil then ... end 除非该值实际上是布尔值。
一个值怎么可能不等于true
,false
或nill
?