lua中是没有Switch语法的,所以很多时候要条件判断的时候只有一条又一条的if 和elseif 去写。当条件比较多且条件里面的内容比较多的时候,会显得比较乱,而且不利于我们后期去维护。但是lua的table类型其实相当强大,我们可以利用表结构和匿名函数,我们就可以实现Switch功能。
下面,归纳了3种常用的写法(其实原理一样):
第一种:
local tab = {
[1] = function()
print("aaa")
end,
[2] = function()
print("bbb")
end,
[3] = function()
print("ccc")
end,
}
function doFunc(cur_index)
if tab[cur_index] then
tab[cur_index]()
end
end
第二种:
local tab = {
[1] = "aaa",
[2] = "bbb",
[3] = "ccc",
}
function doFunc(cur_index)
if tab[cur_index] then
_G[tab[cur_index]]()
end
end
function aaa()
print("aaa")
end
function bbb()
print("bbb")
end
function ccc()
print("ccc")
end
第三种:
local Mgr = {}
switchMgr = Mgr
Mgr.tab = {
[1] = "aaa",
[2] = "bbb",
[3] = "ccc",
}
Mgr.doFunc = function(cur_index)
if Mgr.tab[cur_index] then
Mgr.tab[cur_index]()
end
end
其他lua类调用的时候,可以
require("./switchMgr ") ;
switchMgr.doFunc(1)