我是 .lua 新手。我阅读了文档,但没有找到我的问题的答案。
有一个空间“公司”。 里面有一个“信息” map 。 该映射内部有一个“job”对象和一个“users”对象数组。 "users" 数组由 2 个对象组成。每个对象有 4 个字段。
我需要重命名 2 个字段: 旧字段名称 -> 费率和地址。 新字段名称 -> user_rate 和 user_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_rate 和 address 到 -> 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/