【问题标题】:Lua Array Deep Array search for Open Tibia ScriptLua Array Deep Array 搜索 Open Tibia 脚本
【发布时间】:2014-07-31 10:57:09
【问题描述】:

希望从数组内部的数组中获取信息,基本上没有确切的信息。

    local cfg_raids = {
    [2] =
    {
        ["10:17"] = {
            raidName = "Rats - Thais",
            Event_Type = "Raid Activated",
            Storage = 1234,
            alreadyExecuted = false
        },
        ["10:20"] = {
            raidName = "Testing this shit",
            Event_Type = "Raid Activated",
            Storage = 1235,
            alreadyExecuted = false
        },
    },
    [3] =
    {
        ["12:00"] = {
            raidName = "OrcsThais",
            Event_Type = "Raid Activated",
            Storage = 1236,
            alreadyExecuted = false
        },
    },

试图在没有确切时间戳的情况下随机获取时间。

就像当脚本激活时间戳数组 ["10:17"] 时,它会在不知道 ["10:20"] 的情况下获取所有下一个数组信息 ["10:20"]

打开胫骨信息:http://otland.net/threads/looking-for-some-assistance-on-a-script.216303/

【问题讨论】:

    标签: arrays lua


    【解决方案1】:

    使用像这样的非整数键是无法做到的。您可以尝试使用next 函数从当前键中获取下一个键,但是如果表中有两个以上的键,您无法保证您将获得哪个下一个键(您甚至不能保证它会始终如一相同的下一个键)。

    您可以在该表中使用整数索引并将时间作为表的字段,然后只需使用下一个整数作为您的下一个键(如果可行的话)。

    您还可以将用作键的时间以您想要的任何顺序存储在表(或其他表)的整数索引中,并使用它而不需要重做表本身(例如cfg_raids = { [2] = { "10:17", "10:20", ["10:17"] = {...}, ["10:20"] = {...} } })。

    【讨论】:

    • 哦,这就是我想的,太糟糕了,没有办法使用 0-10000 等来调用这个地方,所以你可以使用 for 语句,这是我唯一能想到的真的有可能,但是有没有办法做到这一点?,比如调用第一个,然后是第二个,等等......数组/表的位置
    • 嗯?您绝对可以使用循环逐个索引遍历表。手动for i = 1,#tab do ... end 或使用ipairs (for i, v in ipairs(tab) do ... end)。
    • 尝试使用这两种方法,仍然无法让它们从第一个发布的表/数组中读取。 for i,line in ipairs(cfg_raids) do pre_text = pre_text .. '\n '.. line end
    • 原始帖子中的cfg_raids 表不是lua 术语中的“数组”,因为它没有来自1..n 的连续键。因此 ipairs 并没有严格定义为对其进行操作。此外,如果您的 line 变量一直在工作,它将包含一个表而不是字符串。试试 `local c = { {raidName = "raid 1"}, {raidName = "raid 2"} };对于 i,raid in ipairs(c) do print(raid.raidName) end' 仅作为示例。
    • @EtanReisner 我建议使用pairs 而不是ipairs,因为后者会在第一个非整数键处停止,因为它是为整数索引数组设计的,而pairs 是专为任何非零索引表而设计。
    猜你喜欢
    • 2022-01-17
    • 2021-02-13
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多