Lua学习笔记(2)——table

Lua中,只有一种数据结构,那就是table,即没有所谓的数组、字典、链表、队列等等,但是都可以通过table来模拟实现。
table的写法有很多,但是大体思想也就两种
1.

table = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}


2.

table={"Sunday"="周日","Monday"="周一","Tuesday"="周二","Wednesday"="周三","Thursday"="周四","Friday"="周五","Saturday"="周六"}


所以它看起来更像是数组+字典的结合体。
第一种的情况下,一般都是通过索引来定位。值得一提的是,Lua跟其他语言有所不同,数组的索引默认值是从1开始的,另外就是我们可以自定义索引起始值,比如负数。但是一般不建议这么干,原因是Lua一些功能都是遵循从1开始的约定(数组的长度操作符),如果自定义索引起始值了,那么就没办法用这些功能了。此外,在遍历数组时一般都是用ipairs, for i,v in ipairs(table) do <do something> end
第二种情况下,table都是通过key值来索引value。当然,除了nil外,其他类型的值都可以当做key。这样的情形下,通常访问table里面的元素是:table[key],但是也有另外一种写法:table.key。这两种在部分情况下是等价的,但是还是有差异的。比如说,key此时不是个值,而只是个变量。那差异就明显了

但是table这种数据结构带给我一个困扰。比如table[1],到底是数组的第一个元素,还是key为1的元素。也就是数组跟字典傻傻的分不清楚了(囧)。当然,要分清,最好的方式参考是上下文。但是如果是这样的呢:table = {“a”,”c”;[1]=”d”,[2]=”e”},额,这个时候该怎么说?

原文地址:https://www.cnblogs.com/haiyidao/p/2744054.html