如何通过索引从lua中的嵌套表中获取值?
我一直在用LOVE2D游戏引擎制作一个游戏,我偶然发现了一个问题。我想访问嵌套表中的变量,但不知道如何访问 这是我现在的代码:如何通过索引从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替换
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