Lua实现switch-case

switch是啥?别多想,不是游戏机? !

Lua君说:虽然我没有case,但是我有switch啊,而且你还可以随意改名字,比如你爱慕已久的CuiHua~

实际上switch同学像是一个,丢给它一个a,它就把case:a对应的地址给你,丢给它一个b,它就把case:b对应的地址给你,丢给它一个c,人家说,不好意思啊哥,我这儿没有c,就走default了哈~

既然是这样,我们就造个这样的(表,不就是table吗?)出来吧~

-- 为了模拟在对象中的使用,我们创建一个Test类,在handleIndex()方法里实现switch-case
local Test = {}

function Test:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    return o
end

function Test:handleIndex(index)
    -- switch是个table,牛叉的是我们可以在创建这个table时同时指定一些case及其对应的方法
    -- 这样我们就能通过switch查找index对应的方法地址并调用
    local switch = {
        case_a = function ()
            print("aa")
        end,
        case_b = function ()
            print("bb")
        end,
        case_c = function ()
            print("cc")
        end,
        case_d = function ()
            print("dd")
        end,
        default = function ()
            print("default")
        end
    }

    if switch[index] then
        switch[index]()
    else
        switch["default"]()
    end
end

f = Test:new()
f:handleIndex("case_a")	-- aa
f:handleIndex("case_e")	-- default

这个操作还可以吧,学到新东西,开星~~ ?

你可能感兴趣的:(Lua)