web-dev-qa-db-fra.com

Conditions en ligne à Lua (a == b? "Oui": "non")?

Est-il possible d'utiliser des conditions en ligne à Lua?

Tel que:

print("blah: " .. (a == true ? "blah" : "nahblah"))
70
Softnux

Sûr:

print("blah: " .. (a and "blah" or "nahblah"))
97
John Zwinck

Si la 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 ce dont vous avez besoin pour fournir des fonctions à votre fonction ternaire, et cela peut devenir lourd:

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))
22
daurnimator