lua-switch功能实现

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)

上一篇:容器化RDS:计算存储分离还是本地存储?


下一篇:MySQL 8.0的MGR多主搭建与测试