Est-il possible d'utiliser des conditions en ligne dans Lua?
Tel que:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
la source
la source
Réponses:
Sûr:
print("blah: " .. (a and "blah" or "nahblah"))
la source
(cond and false-value or x)
cela aboutirax
dans tous les cas.a and false or true
ne donnera pas la même réponse quenot a
. Cet idiome est généralement utilisé dans les cas où la valeur souhaitée sia
est true ne peut pas êtrefalse
ounil
.a and assert(b) or c
.Si le
a and t or f
ne fonctionne pas pour vous, vous pouvez toujours simplement créer une fonction:function ternary ( cond , T , F ) if cond then return T else return F end end print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
bien sûr, alors vous avez l'inconvénient que T et F sont toujours évalués ... pour contourner cela, vous devez fournir des fonctions à votre fonction ternaire, et cela peut devenir compliqué:
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))
la source
t
estnil
.