lua学习之table

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua学习之table相关的知识,希望对你有一定的参考价值。

  学习lua, table是一个相当重要的数据结构。这里记录下table相关内容。
 
  关系表类型,这是一个很强大的类型。我们可以把这个类型看作是一个数组。只是 C语言的数组,只能用正整数来作索引; 在Lua中,你可以用任意类型的来作数组的索引,但这个值不能是 nil。同样,在C语言中,数组的内容只允许一种类型;在 Lua中,你也可以用任意类型的值来作数组的内容,nil也可以。
基本介绍
注意三点: 
    第一,所有元素之间,总是用逗号 "," 隔开;
    第二,所有索引值都需要用 "["和"]" 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有[]括起,则认为是字符串索引
    第三,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1往后编;
 
例如:
tt = {"hello" ,33}
value = 4
tab = {[tt] = "table",key = value, ["flag" ] = nil, 11}
 
print(tab[tt])
print(tab.key)
print(tab[1 ])
以上写法都是对的。
 
look = {[www] = "ok"}这样是不对的,www没有赋值,所以默认为nil因此出错table index is nil
 
---
temp = 1
tab = {[temp] = 1, 11}
print(tab[temp]) --此时的结果是11,因为11没有显式对应的key,因此从1开始,如果前面定义了,则覆盖其value
 
---
temp = 2
tab = {[temp] = 1, 11}
temp = 1
print(tab[temp]) -- 结果是11,虽然定义时[temp] = 1,但是后来我们改变了temp的值,所以指向另外的key了 
 
 
以上可知:
1.对于字符串,在{}定义时,可以key = value, 也可以["flag"] = nil,索引都是string类型,对于非nil类型变量(包括字符串),都可以[variable]=value的方式
2.使用table时,对于字符串,可以通过.的方式访问,也可以通过[]方式访问。tab[a],tab[b],只要a==b那么tab[a]可以访问到tab[b]的值
3.不管定义索引时用的是常量还是变量,最终table中value的索引key是常量,不会随变量的改变而变化该value的key

 

以上是关于lua学习之table的主要内容,如果未能解决你的问题,请参考以下文章

lua学习之table类型

lua学习之深入函数第一篇

lua 学习之编译

lua学习之loadfile, dofile, require

Lua学习之Notepad++ 设置运行 lua 和 python

lua 学习之错误处理