Czy w Lua można używać warunków inline?
Jak na przykład:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
źródło
źródło
Odpowiedzi:
Pewnie:
print("blah: " .. (a and "blah" or "nahblah"))
źródło
(cond and false-value or x)
to spowodujex
we wszystkich przypadkach.a and false or true
nie da takiej samej odpowiedzi, jaknot a
. Ten idiom jest zwykle używany w przypadkach, gdy żądana wartość, jeślia
jest prawdziwa, nie może byćfalse
lubnil
.a and assert(b) or c
.Jeśli
a and t or f
to nie zadziała, zawsze możesz po prostu utworzyć funkcję:function ternary ( cond , T , F ) if cond then return T else return F end end print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
oczywiście, wtedy masz tę wadę, że T i F są zawsze oceniane ... aby obejść, musisz zapewnić funkcje swojej funkcji trójskładnikowej, a to może stać się nieporęczne:
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))
źródło
t
jestnil
.