Lua里的"switch-case"語句


Lua本身並沒有提供switch-case語句,難道說我們就只能靠不斷的"if ... elseif ... "這樣冗長的方式來實現選擇的功能么?當然不是這樣的。Lua提供了功能強大的metatable,我們可以選取任意的數據類型作為table的索引類型和元素類型。而實質上在C語言中,switch-case語句是根據不同的情況(參數的值)來選擇執行不同的動作,數組則是根據不同的下標返回對應的數據。如果函數可以作為一種數據類型存在,那么很明顯switch-case語句只是生成了一個元素類型是函數的數組而已(其實C編譯器也確實是這么做的)。在Lua里函數確實是一種數據類型, 所以自然而然就可以像下面這樣寫出:

 1 print "Hello, switch-case"
 2 
 3 local switch = {
 4     [1] = function()    -- for case 1
 5         print "Case 1."
 6     end,
 7     [2] = function()    -- for case 2
 8         print "Case 2."
 9     end,
10     [3] = function()    -- for case 3
11         print "Case 3."
12     end
13 }
14 
15 local a = 4
16 local f = switch[a]
17 if(f) then
18     f()
19 else                -- for case default
20     print "Case default."
21 end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM