Lua三元运算符 - 多个变量

时间:2014-08-18 11:43:52

标签: lua ternary-operator

如果某个条件为真,我想为两个变量分配两个值,如果所述条件为假,则为两个不同的值。我认为它会这样做:

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;像我期待的那样工作?

1 个答案:

答案 0 :(得分:6)

你错过了Lua的andor是短切的,而且逗号在层次结构中较低。基本上,这里发生的事情是,首先4 > 5 and 1评估为false2 or 3评估为24将被忽略。在第二种情况下,4 < 5true,因此4 < 5 and 11,其余部分保持不变。

正如Egor Skriptunoff建议你做的那样

a, b = unpack(4 > 5 and {1,2} or {3,4})

代替。