Чи є спосіб використовувати вбудовані умови в Lua?
Як от:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Відповіді:
Звичайно:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)це призведе до xв усіх випадках.
a and false or trueто не буде давати таку ж відповідь, як not a. Ця ідіома зазвичай використовується для випадків, коли бажаним значенням aістини не може бути 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.