在Lua中使用枚举型变量

150 views
Skip to first unread message

剑孤寒

unread,
Mar 14, 2008, 10:13:57 PM3/14/08
to 剑孤寒的游戏编程小站
在Lua中使用枚举型变量
转载请注明出处: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)

输出为:
1
2

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