无论如何,在Lua中可以使用内联条件吗?
如:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Answers:
当然:
print("blah: " .. (a and "blah" or "nahblah"))
(cond and false-value or x)
都会导致x
。
a and false or true
不会给出与相同的答案not a
。此惯用法通常用于期望值if a
true不能为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
is nil
。