在Lua中使用枚举型变量

来源:互联网 发布:trustdata移动大数据 编辑:程序博客网 时间:2024/05/22 13:51
转自:http://groups.google.com/group/jianguhan 

用lua来写游戏脚本的确是一件很方便的事情,但是有时候需要用到枚举类型时就有点麻烦了,因为lua里时没有枚举型变量这个东西的,所以要使用枚举还 得自己转换一下,我写了一个函数用来做这种转换: 
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) 
输出为: 


当然,也可以指定下标从多少开始, 
比如从10开始,只要把上面创建枚举表的语句换成下面这样就可以了: 
EnumTable = CreatEnumTable(EnumTable, 10)