gpt4 book ai didi

Lua 5.0 - 即使值不同,对表的迭代也会忽略重复的键

转载 作者:行者123 更新时间:2023-12-02 08:21:57 27 4
gpt4 key购买 nike

阅读代码片段中注入(inject)的注释应该提供足够的上下文。

   --| Table |--
QuestData = {
["QuestName"]={
["Quest Descrip"]={8,1686192712},
["Quest Descrip"]={32,1686193248},
["Quest Descrip"]={0,2965579272},
},
}


--| Code Snippet |--
--| gets QuestName then does below |--

if QuestName then
-- (K = QuestName) and (V = the 3 entries below it in the table)
for k,v in pairs(QuestData) do
-- Checks to make sure the external function that obtained the QuestName matches what is in the table before cont
if strlower(k) == strlower(QuestName) then
local index = 0
-- Iterates over the first two pairs - Quest Descrip key and values
for kk,vv in pairs(v) do
index = index + 1
end
-- Iterates over the second two pairs of values
if index == 1 then
for kk,vv in pairs(v) do
-- Sends the 10 digit hash number to the function
Quest:Function(vv[2])
end
end
end
end
end

我遇到的问题是 Lua 只会选择其中一个数字而忽略其余的数字。无论是否重复,我都需要所有可能的哈希数。 QuestData 表(“数据库”)有超过 10,000 个条目。我不会遍历所有这些并删除重复项。此外,副本的存在是因为可以在游戏中的多个位置拾取相同的任务。这不是重复的任务,但它具有不同的哈希数。

最佳答案

key 始终是唯一的。这是键的要点,键指向唯一值,您不能有更多具有相同名称的键来指向不同的值。根据 Lua 表的定义。
就像您想要两个具有相同名称和不同内容的变量一样。它没有任何意义 ...

The table type implements associative arrays. [...]

Like global variables, table fields evaluate to nil if they are not initialized. Also like global variables, you can assign nil to a table field to delete it. That is not a coincidence: Lua stores global variables in ordinary tables.


引自 Lua Tables

Lua中的散列
根据评论,我更新了答案以提供有关散列的一些想法。
您通常在 C 等低级语言中使用散列。在 Lua 中,关联数组已经在后台以某种方式进行了散列,所以这将是矫枉过正(尤其是使用 SHA 左右)。
而不是 C 中常用的链表,您应该只构建更多级别的表来处理冲突(Lua 中没有“更好”的东西)。
如果你想让它花哨地设置一些元表,让它以某种方式透明。但是从您的问题来看,您的数据是什么样子以及您真正想要什么真的不清楚。
基本上你不需要更多:
QuestData = {
["QuestName"]={
["Quest Descrip"]={
{8,1686192712},
{32,1686193248},
{0,2965579272},
},
},
}

关于Lua 5.0 - 即使值不同,对表的迭代也会忽略重复的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com