¿Hay alguna forma de utilizar condiciones en línea en Lua?
Como:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
fuente
fuente
Respuestas:
Por supuesto:
print("blah: " .. (a and "blah" or "nahblah"))
fuente
(cond and false-value or x)
eso resultará en elx
en todos los casos.a and false or true
no va a dar la misma respuesta quenot a
. Este modismo se usa generalmente para casos en los que el valor deseado sia
es verdadero no puede serfalse
onil
.a and assert(b) or c
.Si
a and t or f
no funciona 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 evitar que necesita proporcionar funciones a su función ternaria, y eso puede volverse 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))
fuente
t
esnil
.