Gibt es in Lua überhaupt Inline-Bedingungen?
Sowie:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
quelle
quelle
Antworten:
Sicher:
print("blah: " .. (a and "blah" or "nahblah"))
quelle
(cond and false-value or x)
Das führtx
in allen Fällen zu.a and false or true
das nicht die gleiche Antwort geben wird wienot a
. Diese Redewendung wird normalerweise für Fälle verwendet, in denen der gewünschte Wert, wenn era
wahr ist, nichtfalse
oder sein kannnil
.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))
quelle
t
istnil
.