Есть ли способ использовать встроенные условия в Lua?
Например:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Ответ 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 об тройном операторе, а также описание проблемы и несколько решений.
Ответ 4
Вы можете использовать троичный, объявив эту следующую функцию -
function if_(c, a, b)
if c == true then
return a
else
return b
end
end
local a = 1, b = 1
--now just use the function like this
print("blah " .. if_(a==b, "yes", "no"))