Est-il possible d'utiliser des conditions en ligne dans Lua?
Tel que:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Réponses:
Sûr:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)cela aboutira xdans tous les cas.
a and false or truene donnera pas la même réponse que not a. Cet idiome est généralement utilisé dans les cas où la valeur souhaitée si aest true ne peut pas être falseou nil.
a and assert(b) or c.
Si le a and t or fne 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))
test nil.