Tom*_*Tom 4 lua ternary-operator
假设我想在某个条件为真时为两个变量分配两个值,如果所述条件为假则为两个不同的值.我会假设它会这样做:
a, b = 4 > 5 and 1, 2 or 3, 4
Run Code Online (Sandbox Code Playgroud)
然而,这指定为假,b为2.如果我们有:
a, b = 4 < 5 and 1, 2 or 3, 4
Run Code Online (Sandbox Code Playgroud)
这正确地指定a为1,b为2.
我在这里错过了什么,如何让"三元运算符"像我期望的那样工作?
你错过了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})
Run Code Online (Sandbox Code Playgroud)
代替.
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |