LUA:在2d表中循环显示第一个键名

时间:2016-04-18 10:05:00

标签: lua

目前我坚持这个:
t = {['79402d'] = {'-5.4','5','1.6'}, ['5813g1'] = {'3','0.15','18'}}
现在我需要遍历此表来检查if name == t[1],但我该怎么办呢? 我尝试过这样的事情:for i=1,#t,1 do print(t[i])但它似乎不起作用 我希望你能帮助我们;)

3 个答案:

答案 0 :(得分:0)

不确定为什么它第一次没用,但我解决了我的问题:
for a,b in pairs(t) do print(a, b[1], b[2], b[3]) end

答案 1 :(得分:0)

请注意,长度运算符#将仅在特殊情况下为表中的元素提供正确数量。在你的情况下#t将返回0,因此你的for循环什么都不做。

有关如何使用长度运算符的详细信息,请参阅https://www.lua.org/manual/5.3/manual.html 第3.4.7节 - 长度运算符

对于常规数组,非n值从1到给定n,其长度恰好是n,即其最后一个值的索引。所以如果你没有t [1]或者n-1,那么#t将为零,如果t [n]是从t [1]开始的表格中的第一个零值。

由于你没有[1],只有[&#39; 79402d&#39;]和[&#39; 5813g1&#39;]你的for循环索引t [i]无论如何都不会起作用。< / p>

请阅读 3.4.9 - 表格构造函数,了解表格构造的工作原理。 t = {"hello", "world"}  与

相同
t = {}
t[1] = "hello" 
t[2] = "world"

(此处t[1]"hello"#t2

t = {['key1'] = "hello", ['key2'] = "world"}

等于

t = {}
t['key1'] = "hello"
t['key2'] = "world"

所以t[1]此处为nil#t0

答案 2 :(得分:0)

# operator返回表格数组部分的长度。您的表不是数组(即从索引1到给定n的非零值的表)。因为你的循环没有迭代任何元素。

使用pairs迭代表中的所有键,无论它们是什么。