Встроенные условия в Lua (a == b? "да" "нет")?
есть ли в любом случае использовать встроенные условия в Lua?
, например:
print("blah: " .. (a == true ? "blah" : "nahblah"))
3 ответа:
Если
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))
есть хорошая статья на lua-пользователи Вики о тернарном операторе, вместе с объяснением проблемы и несколькими решениями.