lua conditional ternary

Condiciones en línea en Lua(a== b? "Sí": "no")?



conditional ternary (3)

¿Hay alguna forma de usar las condiciones en línea en Lua?

Como:

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


Hay un buen artículo en la wiki de lua-users sobre el operador ternario, junto con una explicación del problema y varias soluciones.


Por supuesto:

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


Si a and t or f no funcionan para usted, siempre puede crear una función:

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

por supuesto, entonces tiene el inconveniente de que T y F siempre se evalúan ... para entender que necesita proporcionar funciones a su función ternaria, y eso puede resultar difícil de manejar:

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))