【发布时间】:2013-10-19 13:53:23
【问题描述】:
我无法理解表达式 ""==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 常见问题解答所述
类 C 语言认为 0 等价于 false,但事实并非如此 为卢亚。只有显式的 false 或 nil 等效于 false。什么时候 如有疑问,请明确条件,例如如果 val == nil 则 ... 结束 除非该值实际上是布尔值。
值如何不等于true、false 或nill?
【问题讨论】:
-
好吧,好像
""是一个空字符串。所以,它不是true,不是false,也不是nill。 -
我不明白为什么应该这样做?
-
我认为问题是我假设字符串会有真值/假值。
-
@HennyH,但您引用的文档说他们没有。那你为什么还对它感到惊讶呢?
-
顺便说一下@HennyH,您通常使用Python,对吗?
>>> ""==True False >>> ""==False False >>> ""==None False:)
标签: lua