目前我坚持这个:
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])
但它似乎不起作用
我希望你能帮助我们;)
答案 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"
而#t
为2
而t = {['key1'] = "hello", ['key2'] = "world"}
等于
t = {}
t['key1'] = "hello"
t['key2'] = "world"
所以t[1]
此处为nil
而#t
为0
答案 2 :(得分:0)
#
operator返回表格数组部分的长度。您的表不是数组(即从索引1到给定n的非零值的表)。因为你的循环没有迭代任何元素。
使用pairs
迭代表中的所有键,无论它们是什么。