lua之table学习

来源:互联网 发布:淘宝网处罚考试答案 编辑:程序博客网 时间:2024/05/08 15:17

够着是用于创建和初始化table的表达式,这是lua特有的一种表达,并且也是lua种最有用的,最通用的机制之一。它也有点类似有C/C++中enum,可以定义常量。

 我们先看下例子吧:

_type = {red_color = "red",bule_color = "red",white_color = "red",{x = 1, y = 2},{x = 3, y = 4},{x = 5, y = 6},}print(_type.red_color);print(_type["red_color"]);print(_type[1].x);print(_type[2].x);print(_type[3].x);

_type中定义了3个普通数据成员,后的三个成员table嵌套进去,作为_type的数据成员。

我们通常访问前3个成员,有两种方式:

print(_type.red_color);print(_type["red_color"]);

后面由于是作为了一个嵌套的table,我们如需要访问它们的话,我们只需要当做数组来访问得到某一个数据成员,把它看做是一个普通的tabl,然后可以像普通table一样访问它的数据成员了。

这两种风格的构造是各有其限制,例如,不能使用负数的索引,也不能用运算符作为记录的字段名,为了满足这些要求,Lua还提供了一种更通用的格式,这种格式允许在方括号之间显示地用一个表达式来初始化索引值

opnames = {["+"] = "add",["-"] = "sub",["*"] = "mul",["/"] = "div","-","-1",}i = 20s = "-"a = {[i + 0] = s,[i + 1] = s .. s,[i + 2] = s .. s .. s,}print(opnames[s])print(a[22])print(opnames[2]) --》-1

语法看似繁琐了一点,但是很灵活。

构造式:

{x = 0. y = 0} 等价于{["x"] = 0, ["y" = 0]}

{"r", "g", "b"}等价于[[1] = "r", [2] = "g", [3] = "b"}

在Lua中构造式的索引下标都是以1为起始索引下标,不推荐以索引下标0为开始数组,大多数内建函数都假设数组起始于索引1,若遇到以索引0开始的数组,它们就无法正确地处理了。






0 0