Lua中的table.与table[]的使用
在Lua中有两种方式可以索引到table中的值,分别是.
和[]
;这两种方法都可以直接索引到表里面的值,但是还是有一些区别的,往下看进行分析
若当前有一个表tb,表的格式如下
tb = { ["x"]=1,["y"]=2}
一、使用table.
进行索引,这种是表示使用字符串x
作为索引tb表里面的值;这是一般情况下的索引方式
print(tb.x,tb.y)
--此时 tb.x == tb["x"]
-- tb.y == tb["y"]
二、使用table[]
进行索引,这种是表示使用一个参数进行索引表中内容的;一般可以在函数传参时使用,或者接收到的某个变量,若要将该变量作为索引值时可以使用table.[]
local a = "x"
local b = "y"
print(tb[a],tb[b])
--此时就直接索引进行返回该索引上的值了 tb[a] == tb["x"]
-- ta[b] == tb["y"]
其实它们的区别是一个直接固定
了索引值;另一个可以通过变量
来进行改变索引
特殊情况:像下面这种情况需要注意一下
tb = { x=1,y=1}
print(tb.x,tb["x"],tb["y"],tb[x])
--输出结果为: 1 1 1 nil
- tb = {x=1,y=1}中的
x=1,y=1
其实时相当于tb.x==1,tb.y==1
- 关于为什么
tb[x]
会打印nil是因为此时并没有x
这个变量,所以这个时候tb[x]==tb[nil]
- 这其实是table里面的一种初始化语法,并非是tb里面有一个索引为x
当tb表中存在了x=1
,此时在定义一个["x"]="yy"
后此时永远都只会使用最后一次赋的值,因为它们代表的是同一个索引
tb = { x=1,y=1,["x"]="yy"}
print(tb.x,tb["x"],tb["y"],tb[x])
--输出结果:yy yy 1 nil
--此时有了["x"]索引更新了它的值,所以tb.x与tb["x"]就会打印 yy
还没有评论,来说两句吧...