Existe alguma maneira de usar condições inline em Lua?
Tal como:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
fonte
fonte
Respostas:
Certo:
print("blah: " .. (a and "blah" or "nahblah"))
fonte
(cond and false-value or x)
Isso resultará emx
em todos os casos.a and false or true
não vai dar a mesma resposta quenot a
. Esse idioma geralmente é usado para casos em que o valor desejado sea
verdadeiro não pode serfalse
ounil
.a and assert(b) or c
.Se o
a and t or f
não funcionar para você, você pode apenas criar uma função:function ternary ( cond , T , F ) if cond then return T else return F end end print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
é claro, então você tem a desvantagem de que T e F são sempre avaliados ... para contornar que você precisa fornecer funções para sua função ternária, e isso pode ficar complicado:
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))
fonte
t
énil
.