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

這個操作還可以吧,學到新東西,開星~~ ?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章