Lua中的内联条件(a == b?“yes”:“no”)?

有没有在Lua中使用内联条件?

如:

print("blah: " .. (a == true ? "blah" : "nahblah")) 

当然:

 print("blah: " .. (a and "blah" or "nahblah")) 

如果a and t or f不适合你,你总是可以创build一个函数:

 function ternary ( cond , T , F ) if cond then return T else return F end end print("blah: " .. ternary(a == true ,"blah" ,"nahblah")) 

当然,那么你有退步,T和F总是评估….为了解决这个问题,你需要提供函数给你的三元函数,这可能会变得笨拙:

 function ternary ( cond , T , F , ...) if cond then return T(...) else return F(...) end end print("blah: " .. ternary(a == true ,function() return "blah" end ,function() return "nahblah" end)) 

关于三元运算符的lua-users wiki上有一篇不错的文章,还有问题解释和几个解决scheme。