Встроенные условия в Lua (a == b? "да" "нет")?


есть ли в любом случае использовать встроенные условия в Lua?

, например:

print("blah: " .. (a == true ? "blah" : "nahblah"))
3 62

3 ответа:

обязательно:

print("blah: " .. (a and "blah" or "nahblah"))

Если 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-пользователи Вики о тернарном операторе, вместе с объяснением проблемы и несколькими решениями.