Lua表分析及总结

   Table表就是一个随意插值的无序的Map集合,若是这个值没有给出对应的key索引, 那么默认的索引值就是这个value在table表中的顺序值(默认从1开始)中间有穿插有默认索引的不计入其中且依次继续叠加,若是给了索引值的key,那么能够根据key找到对应的value。
      Lua中,你能够用任意类型的值来做数组的索引 但这个值不能为 nil  Lua中,你也能够用任意类型的值来做数组的内容,nil也能够,对于Table表来讲只有“引用”没有“拷贝”的概念。

基本介绍
注意三点: 
    第一,全部元素之间,老是用逗号 "" 隔开;
    第二,全部索引值都须要用 "[""]" 括起来;若是是字符串,还能够去掉引号和中括号; 即若是没有[]括起,则认为是字符串索引
    第三,若是不写索引,则索引就会被认为是数字,并按顺序自动从1日后编;
        第四,print打印时:
               1,都是 print(表名变量[])的格式。
               2,若是是默认不写索引的,表名变量后的中括号里标记的是对应从1增加的索引值。
               3,若是表里索引是字符串的形式能够直接使用:表名变量.字符串 或者 表名变量["字符串"]的形式。
               4,若是表里索引是其余格式就直接使用:表名变量[索引值]便可。
一个持有Table的变量和Table之间是没有固定的关联性的。

#操做符对一个table引用来操做的话,返回这个table的 “最后”一个索引的值 但不必定是长度。#操做符是以nil值为结尾的。但是table是能够有空隙的。便可以只初始化一、二、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开始的) 
相似于这样的操做,其实就是自动将.后的字段默认成表中的属性。