• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            劍孤寒的小站

            人生的價(jià)值不是用時(shí)間,而是用深度去衡量的!
            posts - 75, comments - 290, trackbacks - 0, articles - 0

            在Lua中使用枚舉型變量

            Posted on 2008-10-26 11:07 劍孤寒 閱讀(15667) 評(píng)論(2)  編輯 收藏 引用 所屬分類: Lua
            《在Lua中使用枚舉型變量》
            轉(zhuǎn)載請(qǐng)注明出處:http://groups.google.com/group/jianguhan


            用lua來(lái)寫游戲腳本的確是一件很方便的事情,但是有時(shí)候需要用到枚舉類型時(shí)就有點(diǎn)麻煩了,因?yàn)閘ua里時(shí)沒(méi)有枚舉型變量這個(gè)東西的,所以要使用枚舉還 得自己轉(zhuǎn)換一下,我寫了一個(gè)函數(shù)用來(lái)做這種轉(zhuǎn)換:

            function CreatEnumTable(tbl, index)
                assert(IsTable(tbl))
                local enumtbl = {}
                local enumindex = index or 0
                for i, v in ipairs(tbl) do
                    enumtbl[v] = enumindex + i
                end
                return enumtbl
            end

            在需要用到枚舉變量的地方只要這樣用就行了:
            EnumTable =
            {
                "ET1",
                "ET2",
            }

            EnumTable = CreatEnumTable(EnumTable )
            print(EnumTable.ET1)
            print(EnumTable.ET2)

            輸出為:
            1
            2

            當(dāng)然,也可以指定下標(biāo)從多少開始,
            比如從10開始,只要把上面創(chuàng)建枚舉表的語(yǔ)句換成下面這樣就可以了:
            EnumTable = CreatEnumTable(EnumTable, 10)

            Feedback

            # re: 在Lua中使用枚舉型變量   回復(fù)  更多評(píng)論   

            2013-08-15 09:32 by liquidmonkey
            function enum(t)
            local enumtable = {}
            local enumindex = 0
            local tmp,key,val
            for _,v in ipairs(t) do
            key,val = string.gmatch(v,"([%w_]+)[%s%c]*=[%s%c]*([%w%p%s]+)%c*")()
            if key then
            tmp = "return " .. string.gsub(val,"([%w_]+)",function (x) return enumtable[x] and enumtable[x] or (type(_G[x]) == "numbers" and _G[x] or x) end)
            enumindex = loadstring(tmp)()
            else
            key = string.gsub(v,"([%w_]+)","%1");
            end
            enumtable[key] = enumindex
            enumindex = enumindex + 1
            end
            return enumtable
            end
            ---------------------------------------------------------------------------------------------------

            MyGlobalNumber = 10
            MyEnum = enum{
            "a=1"
            "b"
            "c=MyGlobalNumber"
            "d"
            "e=100"
            "f"
            "g=2^3"
            "h"
            "i=math.floor(100.001)+MyGlobalNumber*10-100/5"
            "j"
            }

            # re: 在Lua中使用枚舉型變量   回復(fù)  更多評(píng)論   

            2013-08-15 10:03 by liquidmonkey
            更正:有個(gè)地方多余了
            tmp = "return " .. string.gsub(val,"([%w_]+)",function (x) return enumtable[x] and enumtable[x] or (type(_G[x]) == "numbers" and _G[x] or x) end)
            改成:
            tmp = "return " .. string.gsub(val,"([%w_]+)",function (x) return enumtable[x] and enumtable[x] or x end)
            无码国内精品久久人妻麻豆按摩 | 性欧美丰满熟妇XXXX性久久久 | 色综合久久久久网| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 欧美一区二区三区久久综合| 色综合久久无码中文字幕| 久久久久久狠狠丁香| 亚洲va久久久久| 91久久精品国产免费直播| 久久综合亚洲色HEZYO社区| 国产精品视频久久久| 狠狠综合久久AV一区二区三区| 久久亚洲精品中文字幕三区| 无码人妻久久一区二区三区蜜桃 | AV无码久久久久不卡网站下载 | 久久久精品国产sm调教网站| 久久精品一区二区三区中文字幕| 色偷偷偷久久伊人大杳蕉| 久久久久免费视频| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲欧洲精品成人久久曰影片| 99re这里只有精品热久久| 东方aⅴ免费观看久久av| 久久久久综合中文字幕| 国产一区二区三区久久| 老色鬼久久亚洲AV综合| 国内精品综合久久久40p| 久久天天躁狠狠躁夜夜avapp| 久久综合九色欧美综合狠狠| 亚洲国产成人久久综合碰碰动漫3d| 热re99久久精品国99热| 久久久久国产精品人妻| 久久久久久综合网天天| 国产69精品久久久久久人妻精品 | 久久久久久久国产免费看| 国产激情久久久久影院小草 | 伊人色综合久久天天| 久久国产成人午夜aⅴ影院| 91精品国产91久久久久久蜜臀| 高清免费久久午夜精品| 99久久国产综合精品五月天喷水 |