首页 > 解决方案 > Lua 对象数组

问题描述

我想要一个对象列表,我可以在列表顶部添加一个新对象,所以当我想要这个对象时,我会得到最新的对象。我对lua很陌生。我是怎么理解的。

--input
local dataName = 'deaths'
local data = {
    id = 1,
    weapon = 'ak'
}
--list
local list = {}

function addlist(data)
    cache[dataName] = data
end

这只是替换旧对象。我想要旧的和新的对象。你可以添加

cache[dataName][number] = data

并且只跟踪数字,但是我将如何做到这一点,或者有更好的方法吗?

它只是一个对象数组。

标签: arrayslistobjectlua

解决方案


您有一个list不使用的表,并且您使用了一个cache未在代码段中定义的表。所以我会用我自己的名字来避免混淆。

对于您的列表,您可以使用一个简单的 Lua 表。

local stack = {}

您现在可以通过以下方式将新项目附加到列表中

stack[#stack+1] = newItem

或者

table.insert(stack, newItem)

要将项目添加到最后,只需获取具有最高索引的元素。

local lastItem = stack[#stack]
-- if you want to remove it from the list additionally do
stack[#stack] = nil

或简称:

local lastItem = table.remove(stack)

1如果您将 nil 分配给and之间的任何索引,这将不起作用#stack


推荐阅读