【问题标题】:How do I get a value by index from a nested table in lua?如何通过索引从 lua 中的嵌套表中获取值?
【发布时间】:2019-08-14 17:30:28
【问题描述】:

我一直在使用 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 love2d


    【解决方案1】:

    'http://lua-users.org/wiki/TablesTutorial'

    提供的链接提供了易于理解的 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 和索引编号。这很大程度上取决于你。请记住,当您进一步嵌套时,同样的规则适用。所以,完整可能看起来像 rooms[1].complete、room["r1" ].complete 或 rooms.r1.complete。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 2014-08-27
      • 2015-03-01
      • 1970-01-01
      • 2021-03-11
      • 2014-01-09
      • 2014-06-13
      • 1970-01-01
      • 2015-03-26
      相关资源
      最近更新 更多