zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    nsstring -->nsdictionary
    卫辉市,
    iPhone 手机内存,
    连接错误,等的好漫长,
    BZOJ 1631==USACO 2007== POJ 3268 Cow Party奶牛派对
    POJ 2837 Til the Cows Come Home
    POJ 1285 确定比赛名次
    Codevs 2833 奇怪的梦境
    Codevs 1063 合并果子
    Codevs 1231 最优布线问题
  • 原文地址:https://www.cnblogs.com/FreeBirdLjj/p/3238621.html
Copyright © 2011-2022 走看看