Встроенные условия в Lua (a == b? "Yes": "no")? - PullRequest
69 голосов
/ 03 апреля 2011

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

Например:

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

Ответы [ 2 ]

95 голосов
/ 03 апреля 2011

Конечно:

print("blah: " .. (a and "blah" or "nahblah"))
21 голосов
/ 03 апреля 2011

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