Sof*_*nux 73 lua conditional ternary
无论如何在Lua使用内联条件?
如:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Run Code Online (Sandbox Code Playgroud)
Joh*_*nck 102
当然:
print("blah: " .. (a and "blah" or "nahblah"))
Run Code Online (Sandbox Code Playgroud)
dau*_*tor 22
如果这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"))
Run Code Online (Sandbox Code Playgroud)
当然,那么你有一个回顾,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))
Run Code Online (Sandbox Code Playgroud)
小智 17
你通常可以这样做:
condition and ifTrue or ifFalse
Run Code Online (Sandbox Code Playgroud)
但这不一定是最好的方法。主要原因是因为如果ifTrue是一个假值(有时),即使是一个真值ifFalse也会评估。condition无需太多额外工作即可简单完成此操作的一种方法是:
(condition and {ifTrue} or {ifFalse})[1]
Run Code Online (Sandbox Code Playgroud)
它的优点是不仅是一个表达式并且不会受到ifTrue虚假问题的影响,这意味着它可以处理所有情况,而且还具有短路的优点(不评估其他表达式)。不需要额外的功能或搞乱 Lua 的复杂方面。