Чи є спосіб використовувати вбудовані умови в 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
.