gpt4 book ai didi

Lua-迭代嵌套表

转载 作者:行者123 更新时间:2023-12-02 07:40:15 24 4
gpt4 key购买 nike

我已经学习 Lua 几个星期了,这是我一次又一次的症结所在。我已尝试阅读有关此主题的帖子和书籍。

我使用 Lua 查询软件监控系统 (Nimsoft),我的数据以表格形式返回给我。

我不会发布整个输出,但这里有一个我认为可以描述结构的片段:

表引用是“h_resp”

root:
domain:nevil-nmsdom
robotlist:
1:
ssl_mode:0
os_user2:
origin:nevil-nmshub
os_major:UNIX
ip:192.168.1.58
os_minor:Linux
addr:/nevil-nmsdom/nevil-nmshub/nevil-multibot_03
status:0
license:1
last_inst_change:1340754931
created:1341306789
offline:0
last_change:1341306869
lastupdate:1344522976
autoremove:0
os_user1:
flags:1
os_description:Linux 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64
name:nevil-multibot_03
metric_id:M64FB142FE77606C2E924DD91FFCC3BB4
device_id:DDFF83AB8CD8BC99B88221524F9320D22
heartbeat:900
port:48100
version:5.52 Dec 29 2011
2: etc...etc....

我使用我在这个论坛上找到的 tdump 函数来实现这一点。

for k,v in pairs(h_resp) do
print(k.." ",v)
end

给我顶层,这个我明白。

domain    nevil-nmsdom
robotlist table:0x22136a0

然后我尝试获取“机器人列表”

for k,v in pairs(h_resp.robotlist) do
print(k.." ",v)
end

正如您在下面看到的那样,索引是整数,并且是另一个表的值。

  1    table:0x237e530
0 table:0x22112a0
3 table:0x2211460
2 table:0x2392ee0
5 table:0x2213e80
4 table:0x22130e0
7 table:0x2283b80
6 table:0x2283ff0
8 table:0x22a71e0

我还知道我可以使用以下方法处理这些“嵌套”表之一:

for k,v in pairs(h_resp.robotlist["0"]) do
print(k.." ",v)
end



ssl_mode 0
os_user2
origin network
os_major UNIX
ip 192.168.1.31
os_minor Linux
addr /nevil-nmsdom/nevil-nmshub/nevil-mysql
status 0
...etc...etc...

就我而言,我无法弄清楚如何让 Lua 遍历存储在 robotslist 中的所有表。

其次,我为冗长的电子邮件道歉,但我仍在努力学习/理解这一点……我以前没有编程/脚本编写经验。

谢谢

最佳答案

如果要打印表格列表,然后打印每个表格的内部,然后再打印一次(很像 inception),最简单的方法是使用 recursion

您需要检查您正在查看的表格的当前元素的类型:

function DeepPrint (e)
-- if e is a table, we should iterate over its elements
if type(e) == "table" then
for k,v in pairs(e) do -- for every element in the table
print(k)
DeepPrint(v) -- recursively repeat the same procedure
end
else -- if not, we can just print it
print(e)
end
end

你应该看看 Lua 手册,那里都有解释。//编辑:我应该更清楚;手册中有一节包含与上述非常相似的功能。

关于Lua-迭代嵌套表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com