如果标题没有多大意义,请原谅我。我必须选择是Lua的比较方式有用吗?和 Lua中的比较。
我今天想做这样的事情:
if currChar == nextChar == "-" then
...
end
但每次都会不断返回false
:
> currChar="-"
> nextChar="-"
> =currChar == nextChar == "-"
false
>
-- All true in Python
print(5 == 5) -- true
print(5 == 5 == 5) -- false
print((5 == 5) == (5 == 5)) -- true
print(5 == (4 + 1) == (6 - 1)) -- false
我在一段时间内摆弄了这些值,并发现由于某种原因,Lua从左到右成对比较值:
> = 52 > 3 > 2
stdin:1: attempt to compare number with boolean
stack traceback:
stdin:1: in main chunk
[C]: in ?
>
我有一种情况,这种形式的比较是有用的吗?
为什么要这样比较?
答案 0 :(得分:5)
Lua的比较运算符是真正的二元运算符。他们在两个操作数上工作,就是这样。在Lua中,5 == 5 == 5
被评估为(5 == 5) == 5
,简化为True == 5
并且为false。另一方面,在Python中,5 == 5 == 5
被评估为5 == 5 and 5 == 5
,这是真的。
Python支持比较运算符的链接是非典型的,x < y < z
转换为x < y and y < z
。我所知道的语言并不多,支持这种语法。
至于它是否有用,那完全是武断的。链接语法只是简写。