lua-switch功能实现

这篇博客介绍了在Lua中由于没有内置的Switch语句,如何通过利用表和匿名函数来模拟Switch功能。文章提供了三种不同的实现方式,分别是直接使用函数表、结合全局函数以及通过创建对象和方法。这些方法在条件判断较多且复杂的情况下,有助于提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值