Gibt es in Lua überhaupt Inline-Bedingungen?
Sowie:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Antworten:
Sicher:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)Das führt xin allen Fällen zu.
a and false or truedas nicht die gleiche Antwort geben wird wie not a. Diese Redewendung wird normalerweise für Fälle verwendet, in denen der gewünschte Wert, wenn er awahr ist, nicht falseoder sein kann nil.
a and assert(b) or c.
Wenn das a and t or fbei Ihnen nicht funktioniert, können Sie jederzeit eine Funktion erstellen:
function ternary ( cond , T , F )
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
Natürlich haben Sie dann den Nachteil, dass T und F immer ausgewertet werden. Um dies zu umgehen, müssen Sie Funktionen für Ihre ternäre Funktion bereitstellen, und das kann unhandlich werden:
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))
tist nil.