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 x
in allen Fällen zu.
a and false or true
das 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 a
wahr ist, nicht false
oder sein kann nil
.
a and assert(b) or c
.
Wenn das a and t or f
bei 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))
t
ist nil
.