arrays - 当表确实存在并且具有值时,表 [1] 返回 nil
问题描述
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()是我可以在游戏中调用的函数。
我包含的代码片段返回:(如果我删除了 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”。我在这里想念什么?
解决方案
您没有注意到的是 PrintTablegm_construct:
先打印,然后1 =
. 这意味着该表实际上只包含gm_construct
一个带有 3 个键的表的键。
为了能够始终正确读取 PrintTable 输出,请查看 ident。1 =
列在右侧一次,这意味着它们是嵌套在您最初打印的表中的某些内容的键。
如果这仍然让您感到困惑,请尝试运行:
for k,v in pairs(mapSpawnsData) do
print(k, "=", v)
end
这不会打印嵌套内容。
为了使您的代码正常工作mapSpawnsData.gm_construct[1]
或mapSpawnsData["gm_construct"][1]
推荐阅读
- laravel-5 - 在 laravel 的控制器中保存 blob 图像
- php - Summernote 和 img-upload.php 文件中的绝对路径
- javascript - Equivalent of python's range in Javascript
- python - 用公式的结果填充整列 - 熊猫
- javascript - JSON.parse(string) 的匹配器 - 如何在运行匹配器之前调用 lambda?
- angular - Angular - 拖放以上传附件
- javascript - 如何使用数组从对象数组中提取值
- sql - SSRS 为每条记录设置年份变量
- console - 如何通过任何控制台/命令行将 DWG 转换为 STP 或 IGES
- gradle - Gradle - 作为“jar”任务的一部分将 jar 复制到另一个文件夹