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 x
dans tous les cas.
a and false or true
ne 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 a
est true ne peut pas être false
ou nil
.
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))
t
est nil
.