转自: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)
用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)