Lua中的table.与table[]的使用

缺乏、安全感 2023-01-22 13:55 22阅读 0赞

在Lua中有两种方式可以索引到table中的值,分别是.[];这两种方法都可以直接索引到表里面的值,但是还是有一些区别的,往下看进行分析

若当前有一个表tb,表的格式如下

  1. tb = { ["x"]=1,["y"]=2}

一、使用table.进行索引,这种是表示使用字符串x作为索引tb表里面的值;这是一般情况下的索引方式

  1. print(tb.x,tb.y)
  2. --此时 tb.x == tb["x"]
  3. -- tb.y == tb["y"]

二、使用table[]进行索引,这种是表示使用一个参数进行索引表中内容的;一般可以在函数传参时使用,或者接收到的某个变量,若要将该变量作为索引值时可以使用table.[]

  1. local a = "x"
  2. local b = "y"
  3. print(tb[a],tb[b])
  4. --此时就直接索引进行返回该索引上的值了 tb[a] == tb["x"]
  5. -- ta[b] == tb["y"]

其实它们的区别是一个直接固定了索引值;另一个可以通过变量来进行改变索引

特殊情况:像下面这种情况需要注意一下

  1. tb = { x=1,y=1}
  2. print(tb.x,tb["x"],tb["y"],tb[x])
  3. --输出结果为: 1 1 1 nil
  1. tb = {x=1,y=1}中的x=1,y=1其实时相当于tb.x==1,tb.y==1
  2. 关于为什么tb[x]会打印nil是因为此时并没有x这个变量,所以这个时候tb[x]==tb[nil]
  3. 这其实是table里面的一种初始化语法,并非是tb里面有一个索引为x

当tb表中存在了x=1,此时在定义一个["x"]="yy"后此时永远都只会使用最后一次赋的值,因为它们代表的是同一个索引

  1. tb = { x=1,y=1,["x"]="yy"}
  2. print(tb.x,tb["x"],tb["y"],tb[x])
  3. --输出结果:yy yy 1 nil
  4. --此时有了["x"]索引更新了它的值,所以tb.xtb["x"]就会打印 yy

发表评论

表情:
评论列表 (有 0 条评论,22人围观)

还没有评论,来说两句吧...

相关阅读

    相关 lua-table

    table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数字、字典等。 Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能

    相关 lua#后加table含义

    一般来说是获得一个table的长度(即元素数),但这个操作符实际上陷阱很多。 \的实际作用是获得一个table中最大的数字键值,比如: t = \{“a”, “b”,