Table[1] 当 table 确实存在且具有值时返回 nil
Table[1] returning nil when table does exist and has values
local mapSpawnsData = {}
local JSONData = file.Read(filePath) -- read file as json text
mapSpawnsData = util.JSONToTable(JSONData) -- convert JSON to table
print("TABLE:")
PrintTable(mapSpawnsData)
print("TABLE[1]:")
print(tostring(mapSpawnsData[1]))
这是一个名为 garrysmod 的游戏的脚本。 PrintTable()是我可以在游戏中调用的功能。
我包含的代码片段 returns 这个:(如果我删除 tosring() 则输出相同)
TABLE:
gm_construct:
1 = -1303.524902 167.472397 -44.081600
2 = 1250.890137 331.746185 -44.081600
3 = 674.012085 223.775604 -32.148102
TABLE[1]:
nil
我希望返回“gm_construct”。我在这里错过了什么?
您没有注意到的是,PrintTable 先打印了 gm_construct:
,然后打印了 1 =
。
这意味着 table 实际上只包含 gm_construct
键和带有 3 个键的 table。
为了能够始终正确读取 PrintTable 输出,请查看标识。 1 =
被列在右侧一次,这意味着它们是嵌套在您最初打印的 table 中的内容的键。
如果这仍然让您感到困惑,请尝试 运行 这个:
for k,v in pairs(mapSpawnsData) do
print(k, "=", v)
end
这不会打印嵌套内容。
要使您的代码正常工作,请执行 mapSpawnsData.gm_construct[1]
或 mapSpawnsData["gm_construct"][1]
local mapSpawnsData = {}
local JSONData = file.Read(filePath) -- read file as json text
mapSpawnsData = util.JSONToTable(JSONData) -- convert JSON to table
print("TABLE:")
PrintTable(mapSpawnsData)
print("TABLE[1]:")
print(tostring(mapSpawnsData[1]))
这是一个名为 garrysmod 的游戏的脚本。 PrintTable()是我可以在游戏中调用的功能。
我包含的代码片段 returns 这个:(如果我删除 tosring() 则输出相同)
TABLE:
gm_construct:
1 = -1303.524902 167.472397 -44.081600
2 = 1250.890137 331.746185 -44.081600
3 = 674.012085 223.775604 -32.148102
TABLE[1]:
nil
我希望返回“gm_construct”。我在这里错过了什么?
您没有注意到的是,PrintTable 先打印了 gm_construct:
,然后打印了 1 =
。
这意味着 table 实际上只包含 gm_construct
键和带有 3 个键的 table。
为了能够始终正确读取 PrintTable 输出,请查看标识。 1 =
被列在右侧一次,这意味着它们是嵌套在您最初打印的 table 中的内容的键。
如果这仍然让您感到困惑,请尝试 运行 这个:
for k,v in pairs(mapSpawnsData) do
print(k, "=", v)
end
这不会打印嵌套内容。
要使您的代码正常工作,请执行 mapSpawnsData.gm_construct[1]
或 mapSpawnsData["gm_construct"][1]