【问题标题】:Lua nested tables, table.insert functionLua嵌套表,table.insert函数
【发布时间】:2016-07-01 10:15:16
【问题描述】:

我开始学习 lua,现在我正在尝试处理嵌套表。

基本上我想创建一种使用 json 与 lua 交互的本地“数据库”(我发现这是存储我的值的最佳方式)...

我应该做的是扫描聊天组中的所有成员(我使用的是非官方的电报 api)并将一些值存储在表中。我能够检索到所有需要的数据,所以这是在 main 函数中声明的结构:

local dbs = load_data("./data/database.json")

dbs[tostring(msg.to.id)] = {
        gr_name = {},
        timestamp = "",
        user = {               --user changes into user ids
            us_name = {},
            us_nickname = {},
            us_role = ""
        },
    }

其中 msg.to.id 包含一个有效数字。这就是我试图做的:

dbs[tostring(id)]['users'][tostring(v.peer_id)]['us_nickname'] = v.username

这个可行,但这个:

dbs[tostring(id)]['users'][tostring(v.peer_id)] = table.insert(us_name,v.print_name)

(id 是一个正确的数字并与第一个字段匹配,与传递的所有值相同,如 v.peer_id 和 v.print_name 所以这些不是问题)

给出错误“预期的表格”...我很确定我完全不知道如何在像我这样的表格中插入元素。

你们中的任何人都可以帮助我吗?我希望足够清楚地解释我的问题。

提前感谢大家:)

【问题讨论】:

  • 不清楚您要做什么。 table.insert 用于数组,而您没有。您是否尝试创建要添加到 users 的表?
  • table.insert 向表中插入一个值并且不返回任何内容。
  • 单个用户可以更改名称,所以我想在字段 us_names 中存储新值而不覆盖它...我认为最好的方法是声明一个 us_names 广告数组以使用 table.insert存储该字段而不覆盖以前的值

标签: lua


【解决方案1】:

要将新用户名添加到现有用户,您可能希望将其插入到子表中,如下所示:

table.insert(dbs[tostring(id)]['users'][tostring(v.peer_id)].us_name, v.print_name)

【讨论】:

  • 是的,谢谢 :) 我发现实际上 table.insert 不需要像我一样使用 equals 分配。
猜你喜欢
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2017-05-23
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
  • 2012-11-02
相关资源
最近更新 更多