在C++中,三元运算符 a ? b : c ,当a为真的时候返回b,当a为假的时候返回c。然而lua是没有三元运算符的,有时候为了偷懒习惯用a and b or c来模拟三元运算符,通常这样写的时候是不会有问题的,但是有种特殊情况他会出现意外。(有时候老老实实写if...else...也是蛮好的)
先截一张菜鸟教程的逻辑运算符的图:(lua中把nil和false视为非真情况)
a and b or c
当a为真时, a and b 结果是b
此时 b or c
这时b为真时,直接返回b;b为nil或false时,返回了c
所以,我们需要看b的情况:
①当b不为nil或false时,可以正常模拟三元运算符;
②当b为nil或false时,返回的是c;