Подтвердить что ты не робот

Внутренние условия в Lua (a == b? "Yes": "no" )?

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

Например:

print("blah: " .. (a == true ? "blah" : "nahblah"))
4b9b3361

Ответ 1

Конечно:

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

Ответ 2

Если 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))

Ответ 3

Есть хорошая статья о lua-users wiki об тройном операторе, а также описание проблемы и несколько решений.