Table表就是一个随意插值的无序的Map集合,如果这个值没有给出对应的key索引, 那么默认的索引值就是这个value在table表中的顺序值(默认从1开始)中间有穿插有默认索引的不计入其中且依次继续叠加,如果给了索引值的key,那么可以根据key找到对应的value。
在Lua中,你可以用任意类型的值来作数组的索引, 但这个值不能为 nil 。在 Lua中,你也可以用任意类型的值来作数组的内容,nil也可以,对于Table表来说只有“引用”没有“拷贝”的概念。
在Lua中,你可以用任意类型的值来作数组的索引, 但这个值不能为 nil 。在 Lua中,你也可以用任意类型的值来作数组的内容,nil也可以,对于Table表来说只有“引用”没有“拷贝”的概念。
基本介绍
注意三点:
第一,所有元素之间,总是用逗号 "," 隔开;
第二,所有索引值都需要用 "["和"]" 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;
第一,所有元素之间,总是用逗号 "," 隔开;
第二,所有索引值都需要用 "["和"]" 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引
第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从1往后编;
第四,print打印时:
1,都是 print(表名变量[])的格式。
2,如果是默认不写索引的,表名变量后的中括号里标记的是对应从1增长的索引值。
3,如果表里索引是字符串的形式可以直接使用:表名变量.字符串 或者 表名变量["字符串"]的形式。
4,如果表里索引是其他格式就直接使用:表名变量[索引值]即可。

一个持有Table的变量和Table之间是没有固定的关联性的。
#操作符对一个table引用来操作的话,返回这个table的
“最后”一个索引的值
但不一定是长度。#操作符是以nil值为结尾的。可是table是可以有空隙的。即可以只初始化1、2、3和10号索引的值,其他未初始化的值,跟全局变量一样处理为nil,这时对这个table进行长度操作符操作或者table.getn函数,得到的结果是索引3而不是10。如果想获得真正最后一个索引的值.可以用
table.maxn
获取。仅在索引值为正数有效。如果是负数,则都是返回0。
简单识记:
a = {0, y =1,label = "console"},a中的value 0 对应的索引就是1,a.y和a["y"]对应的是同一个值1.
a.x = 10 等同于 a["x"] = 10.就是往table任意的位置上放一个key=x且value=10的记录。
Table表中最常见的两种方式:
列表部分和记录部分。
{x=10,y=45;"one","two","three"}分号前面是列表部分(有对应索引值的)后面是记录部分(默认索引且从1开始的)
a = {0, y =1,label = "console"},a中的value 0 对应的索引就是1,a.y和a["y"]对应的是同一个值1.
a.x = 10 等同于 a["x"] = 10.就是往table任意的位置上放一个key=x且value=10的记录。
Table表中最常见的两种方式:
列表部分和记录部分。
{x=10,y=45;"one","two","three"}分号前面是列表部分(有对应索引值的)后面是记录部分(默认索引且从1开始的)
类似于这样的操作,其实就是自动将.后的字段默认成表中的属性。
