我想知道是否有在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