Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过索引从lua中的嵌套表中获取值?_Lua_Love2d - Fatal编程技术网

如何通过索引从lua中的嵌套表中获取值?

如何通过索引从lua中的嵌套表中获取值?,lua,love2d,Lua,Love2d,我一直在用LOVE2D游戏引擎制作一个游戏,我偶然发现了一个问题。我想访问嵌套表中的变量,但不知道如何访问 这是我现在的代码: local roomNum = 1 local rooms = { r1 = { complete = false, name = "Room 1" } if rooms[roomNum].complete == true then --problematic line --do stuff end 如果我将rooms[roomNum].complete替换

我一直在用LOVE2D游戏引擎制作一个游戏,我偶然发现了一个问题。我想访问嵌套表中的变量,但不知道如何访问

这是我现在的代码:

local roomNum = 1
local rooms = { r1 = { complete = false, name = "Room 1" }

if rooms[roomNum].complete == true then --problematic line
    --do stuff
end
如果我将
rooms[roomNum].complete
替换为
rooms.r1.complete
,则它可以工作

任何帮助都将不胜感激

'

所提供的链接提供了Lua中的表上易于理解的示例,因此将来可能会证明它是一个有用的资源

至于替换代码工作的原因,字典只是一组键/值对(kvp)。在其他语言的示例中,这些对通常显示为类似KeyValuePair的内容

在您的例子中,您使用的是关于词典使用方式的变体。如您所见,您可以使用编号索引,如room[1],也可以使用字符串,如room[“kitchen”]。当您提供一组数据来初始化字典时,它会变得很有趣

根据所提供的数据,您可以获得以下信息:

local rooms = { r1 = { complete = false, name = "Room 1" } 
r1相当于使用没有数据集的房间[“r1”]。在提供数据集时,任何“命名”键都可以被引用,就像它是字典的属性一样(想想带有公共getter/setter的类)。对于数据集的命名键,还可以提供键和数字

local rooms = { [1] = { complete = false, name = "Room 1" }
此索引符合您提供房间索引的方向。因此,您可以将数据集交换为使用整数而不是r1、r2等,或者将r和索引编号连接起来。这完全取决于你。请记住,在进一步嵌套时,同样的规则也适用。因此,complete可能看起来像文件室[1]。complete、文件室[“r1”].complete或文件室.r1.complete