三元运算符

lua 中的三元运算符语法为:

(a and {b} or {c})[1]

其原因是 Lua 中的 and 和 or 语法和其它语言中的含义不同,具体为:

  • 对于 and 运算符,表达式 a and b 会在 a 解释为 false 时返回 a,否则返回 b

  • 对于 or 运算符,表达式 a or b 会在 a 解释为 true 时返回 a,否则返回 b

根据这个说法,三元运算符要求 a 为真时返回 b,a 为假时返回 c。则运算符为 a and b or c

但是上述表达式对于 a and false or c 不适用,因为:

  • 第一阶段中 a and false 结果总是 false

  • 第二阶段中 false or c 中结果总是 c

也就是说 a and false or c 总是会返回 c。这很明显和我们的预期不同。一种简单的方式就是让 b 使用 table 包装起来,使其总是为 true。另一方面,为了统一类型,将 c 也用 table 包装起来。就形成了

(a and {b} or {c})[1]

替代品

下面的表格列出了一些 lua 方言和拓展品:

语言类型作用

htts://github.com/terralang/terra[terra]

lua 拓展

加入了模板编程

Last moify: 2023-12-27 10:10:47
Build time:2025-07-18 09:41:42
Powered By asphinx