如果某个条件为真,我想为两个变量分配两个值,如果所述条件为假,则为两个不同的值。我认为它会这样做:
a, b = 4 > 5 and 1, 2 or 3, 4
然而,这指定为假,b为2。 如果我们有:
a, b = 4 < 5 and 1, 2 or 3, 4
这正确地指定a为1,b为2。
我在这里缺少什么,如何获得&#34;三元运算符&#34;像我期待的那样工作?
答案 0 :(得分:6)
你错过了Lua的and
和or
是短切的,而且逗号在层次结构中较低。基本上,这里发生的事情是,首先4 > 5 and 1
评估为false
而2 or 3
评估为2
,4
将被忽略。在第二种情况下,4 < 5
为true
,因此4 < 5 and 1
为1
,其余部分保持不变。
正如Egor Skriptunoff建议你做的那样
a, b = unpack(4 > 5 and {1,2} or {3,4})
代替。