1
2 -- 学习一下表结构的语法
3 function studyTableStruct()
4
5 local testTable = {}; --初始化一个空的(即:该表中没有任何域)
6 testTable[2] = "是吧";
7 print(testTable[2]); --此处正常输出。说明就算是添加新字段,字段的索引也未必就一定要按顺序从1开始。
8 testTable[1] = "ak47"; --添加一个无名字的新字段,而且它的索引值是为1的。([a]记住:只要字段有索引的概念,则它就没有名字) 。这边的 [a]与下面的 [b] 说明很关键
9 print(testTable[1]);
10 testTable.newField = "newfield";--添加一个名字为newField的新字段。([b]记住:只要字段有名字,则它就没有索引这一概念。)
11 print(testTable.newField);
12 testTable["x"] = "哇塞,这也行?";
13 print(testTable["x"]);
14
15 -- 如果理解了上面的 [a] 与 [b] ,则很容易理解下面的例子
16 local a = {x = 20, y = 0};--这个例子是来自教材上的例子。但是在此本人有做了修改。并亲自测试过后,总结了上面的 [a] 与 [b] 点
17 print(a.x); --输出:20
18 print(a[1]); --输出:nil
19 print(a["x"]); --输出:20
20 --如果将a的结构改成如下:
21 a = nil;
22 a = {x = 20, "agogo", y = 0, "ak47", "mytest"};
23 print(a.x); --输出:20
24 print(a[1]); --输出:agogo
25 print(a[2]); --输出:ak47
26 print(a[3]); --输出:mytest
27 print(a["x"]); --输出:20
28 --pritn(a[x]); --这样会蹦。要么像 a[1]那样访问。即:中括号呈的内容必须为数字或者使用双引号括号起来
29 --[[
30 总结一下上面的测试例子:
31 1) 大括号:{} 是用来定义一个表结构的。所谓的定义,其实只不过是给表一个初始化的作用。其实里面的字段域有几个或怎么初始化,都只是影响到初始化时的状态。
32 后面不要时,完全可以随时将某个字段删除掉(提示:删除只需要将该字段赋nil即可。)
33 也完全可以随时随地添加一个新的字段。
34 正因为如此灵活,所以说 {} 仅仅只是影响表的初始化的结构状态。
35 2) 表的字段域的访问有两种:YourTable.FieldName以及使用中括号 [] 来访问。
36 a) 如果所访问的字段不存在。则返回nil
37 b) 使用YourTable.FieldName访问字段时,则如果表中不存在FieldName这个字段时,返回nil。存在时,返回相应的值。像上面的a表中的x与y就可以用这种方式访问。
38 或者上面的testTable表中的newField或者 x字段就可以这样子访问
39 c) 使用中括号 [] 访问时,如果表中的字段是有名称的话,则字段必须使用双引号括号起来。否则访问不到。并且还会蹦。
40 d) [] 中的内容,只能是数值索引,或者是使用双引号括号起来的字段的名称。
41 ]]--
42
43 end
44
45