在Lua中是否有替代if语句的方法?



我想知道是否有在lua中使用正常if语句的替代方案。例如,在java中有switch语句,但在Lua

中我似乎找不到。

Lua缺少c风格的switch语句。

switch语句的一个简单版本可以使用表将case值映射到动作来实现。这在Lua中是非常有效的,因为表是按键值散列的,避免了重复的if然后……elseif……语句结束。

action = {
[1] = function (x) print(1) end,
[2] = function (x) z = 5 end,
["nop"] = function (x) print(math.random()) end,
["my name"] = function (x) print("fred") end,
}

常用样式

local var; if condition then var = x else var = y end

可以用and-or"三元"来缩写。若x为真则代入:

local var = condition and x or y
if test == nil or test == false then return 0xBADEAFFE else return test end

可以缩短到…

return test or 0xBADEAFFEE

这工作,即使你不能做:if ... then ... else ... end
像在一个函数…

print(test or 0xBADEAFFE)
-- Output: 3135156222

…或者在提交参数时回退到默认值…

function check(test)
local test = test or 0xBADEAFFE
return test
end
print(check())
-- Returns: 3135156222

最新更新