lua - 如何在.lua中重命名数组中的字段

标签 lua lua-table tarantool tarantool-cartridge

我是 .lua 新手。我阅读了文档,但没有找到我的问题的答案。

有一个空间“公司”。 里面有一个“信息” map 。 该映射内部有一个“job”对象和一个“users”对象数组。 "users" 数组由 2 个对象组成。每个对象有 4 个字段。

我需要重命名 2 个字段: 旧字段名称 -> 费率地址。 新字段名称 -> user_rateuser_address

"company": {
  "information":
    {
      "job":
        {
          "job_name": "N",
          "job_address": 1670392687114,
          "job_salary": 1234567890123,
          "contacts": 0
        },
      "users":
        [
          {
            "id": 1,
            "name": "Alex",
            "rate": 4,
            "address": "bla bla bla"
          },
          {
            "id": 2,
            "name": "Jenifer",
            "rate": 5,
            "address": "bla bla bla"
          }
        ]
    }
}

我的解决方案如下:

for _, tuple in space:pairs() do
   if tuple.params ~= nil or tuple.params.offer_params ~= nil then

      local information = tuple.information or {}
      local users = information.users

      for _, attr in pairs(users) do
         local user_rate = attr.rate
         local user_address = attr.address
      end

      local key = {}
      for _, part in ipairs(key_parts) do table.insert(key, tuple[part.fieldno]) end
      space:update(key, { {'=', 'information', information} })

在这里,我尝试将 rate 重命名为 -> user_rateaddress 到 -> user_address,然后进行更新。

请告诉我这里出了什么问题。

请帮我解决一下。

最佳答案

for _, attr in pairs(users) do
    local user_rate = attr.rate
    local user_address = attr.address
end

您只是创建两个局部变量并为它们分配一个值。循环结束后,它们超出了范围。所以你确实没有做任何有用的事情。

如果您想“重命名”表字段,您需要将这些字段的值分配给新字段名称,并将 nil 分配给旧字段。

for _, user in pairs(users) do
  user.user_rate = user.rate
  user.rate = nil
  user.user_address = user.address
  user.address = nil
end

更多信息,您可能希望实现一个函数来保持代码整洁。

关于lua - 如何在.lua中重命名数组中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75255270/

相关文章:

string - 如何管理大字符串

lua - 如何使用 lua 关键字作为表键?

c++ - 将 Vector<struct> 传递给 Lua 表

lua - 如何向 Tarantool 空间添加新字段

tarantool - 性能 : get+[delete if exists] vs delete

我可以使用 C 作为我的引擎的脚本语言吗?

dynamic - 如何知道 C 中 Lua 函数的返回值计数?

arrays - 如何检查 lua 表是否只包含顺序数字索引?

java - TarantoolConnection16 不是线程安全的

lua - setupvalue 和 upvaluejoin 可以互换吗(lua 调试库)?