Есть ли способ использовать встроенные условия в Lua?
Такие как:
print("blah: " .. (a == true ? "blah" : "nahblah"))
lua
conditional
ternary
Softnux
источник
источник
Ответы:
Конечно:
print("blah: " .. (a and "blah" or "nahblah"))
источник
(cond and false-value or x)
это приведет кx
во всех случаях.a and false or true
не даст того же ответа, что иnot a
. Эта идиома обычно используется в тех случаях, когда желаемое значение ifa
true не может бытьfalse
илиnil
.a and assert(b) or c
.Если у
a and t or f
вас не работает, вы всегда можете просто создать функцию:function ternary ( cond , T , F ) if cond then return T else return F end end print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
конечно, тогда у вас есть недостаток в том, что T и F всегда оцениваются ... чтобы обойти это, вам нужно предоставить функции вашей троичной функции, а это может стать громоздким:
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
естьnil
.