Lua表分析及总结

本文详细解析了Lua中Table表的基本概念、操作方法及应用技巧,包括索引、值引用与拷贝、长度操作符使用、空隙处理、最大索引获取等核心内容,帮助开发者掌握Table表的高效利用。
   Table表就是一个随意插值的无序的Map集合,如果这个值没有给出对应的key索引, 那么默认的索引值就是这个value在table表中的顺序值(默认从1开始)中间有穿插有默认索引的不计入其中且依次继续叠加,如果给了索引值的key,那么可以根据key找到对应的value。
      Lua中,你可以用任意类型的值来作数组的索引 但这个值不能为 nil  Lua中,你也可以用任意类型的值来作数组的内容,nil也可以,对于Table表来说只有“引用”没有“拷贝”的概念。

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

183807_CB3H_223340.jpg

183807_MBhA_223340.jpg

#操作符对一个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开始的) 
类似于这样的操作,其实就是自动将.后的字段默认成表中的属性。
183807_3mRn_223340.jpg
 

转载于:https://my.oschina.net/u/223340/blog/325033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值