Lua里的"switch-case"语句

来源:互联网 发布:ubuntu 本地源 编辑:程序博客网 时间:2024/05/19 03:29

Lua本身并没有提供switch-case语句,难道说我们就只能靠不断的"if ... elseif ... "这样冗长的方式来实现选择的功能么?当然不是这样的。Lua提供了功能强大的metatable,我们可以选取任意的数据类型作为table的索引类型和元素类型。而实质上在C语言中,switch-case语句是根据不同的情况(参数的值)来选择执行不同的动作,数组则是根据不同的下标返回对应的数据。如果函数可以作为一种数据类型存在,那么很明显switch-case语句只是生成了一个元素类型是函数的数组而已(其实C编译器也确实是这么做的)。在Lua里函数确实是一种数据类型, 所以自然而然就可以像下面这样写出:

<pre class="cpp" name="code">print "Hello, switch-case"local switch = {    [1] = function()    -- for case 1        print "Case 1."    end,    [2] = function()    -- for case 2        print "Case 2."    end,    [3] = function()    -- for case 3        print "Case 3."    end}local a = 4local f = switch[a]if(f) then    f()else                -- for case default    print "Case default."end


 

1 0
原创粉丝点击