【发布时间】:2014-08-18 23:55:43
【问题描述】:
假设如果某个条件为真,我想为两个变量分配两个值,如果所述条件为假,则为两个不同的值。我会假设它会这样做:
a, b = 4 > 5 and 1, 2 or 3, 4
但是,这将 a 分配为 false,将 b 分配为 2。 如果我们有:
a, b = 4 < 5 and 1, 2 or 3, 4
这正确地将 a 分配为 1,将 b 分配为 2。
我在这里缺少什么,我怎样才能让“三元运算符”按我的预期工作?
【问题讨论】:
-
三元运算符不适用于值的元组,仅适用于单个值。但是您可以使用数组:
a, b = unpack(4 > 5 and {1,2} or {3,4}) -
通常的“三元运算符”(之所以这么称呼是因为它需要三个操作数)的形式为
expr1 ? expr2 : expr3。它也被称为“条件运算符”。 Lua 没有这样的操作符。 -
@KeithThompson
x and y or z是等价的,只要y不是 false 或 nil(通常不是这种情况)。
标签: lua ternary-operator