【问题标题】:Lua Tables // Loop // Wow Addons // Index as a VariableLua 表 // 循环 // 哇插件 // 作为变量的索引
【发布时间】:2021-06-06 16:55:43
【问题描述】:

我发现游戏函数获取特定值的效率非常低。我想尝试一次从函数中获取所有值,将其放入表中,然后通过索引而不是循环多次访问它

for j=1,10 do
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = GetAuraWithIndex(j)
at["player"]={[a10]={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10}}
end

让我以这种方式访问​​表格:

at["player"][783][10]

我仍然无法将多个结果插入到表格中。 它只使用代表“j”循环中最后一个 a10 的值创建索引

for j=1,10 do

是否有可能让它按我想要的方式工作,所以我得到所有结果的表格,而不是循环中的最后一个?我可以在循环期间打印 a10 并打印为我设计的 a10 值(我的意思是我很确定我在代码的其他地方没有犯任何错误)

这是我的代码插入表格的内容。

at={
    player={
            [783]={
                   [1]="important data"
                   [2]="important data"
                   [3]="important data"
                   [4]="important data"
                   [5]="important data"
                   [6]="important data"
                   [7]="important data"
                   [8]="important data"
                   [9]="important data"
                   [10]=783
                  }
            }
}

所以不是为所有循环插入数据,而是只为 j=10 插入数据。

【问题讨论】:

  • 你只需要在值周围做[a10]={.... [ 使表构造函数将变量值而不是标识符作为预期的键值
  • 您的示例表没有意义。 at={["player"]={132123={123,321,123,231,213,213,123,213,213,231}} a10 是什么? 132123231 ?不能同时是两个
  • @Piglet 嗨,是的,当我想展示表格示例时,这是我的错误。它应该是相同的值,(我编辑它)a10 是一个数字,所有其他都是字符串/数字/布尔值

标签: loops lua add-on


【解决方案1】:
for j=1,aura_count do
local a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = GetAuraWithIndex(j)
at[unit]={[a10]={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10}}
end

在这个循环内unit 不会改变。因此,您将为从1aura_count 的每个j 覆盖at[unit]

我不知道你想如何组织你的数据,但你可以简单地做这样的事情:

at[unit].data = {}
for j=1,aura_count do
  local a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = GetAuraWithIndex(j)
  at[unit].data[j]={[a10]={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10}}
end

【讨论】:

  • 嗨,我无法发布整个代码,但我的其余代码循环 [unit] 并且令人惊讶的是它可以正常工作并按预期插入我的 [unit]。问题是我的 [a10] 仅插入一个值,并且该值等于循环中的最后一个值,因此恰好等于 a10 = GetAuraWithIndex(aura_count)
  • at[unit].data[j]={[a10]={a1,a2,a3,a4,a5,a6,a7,a8,a9,a10}} 这就是我想要的为避免,我使用等于 a10 的 UnitID 和 SpellID 访问我的表。如果我写入表 data[j],我需要遍历表来找到它。使用 [a10] 访问会更高效
  • 然后用a10代替j?我不知道你的代码,我只能猜测。你抱怨只有最后一个条目。所以我向你展示了如何存储超过 1 个条目
  • 非常感谢,我希望自己让它看起来更干净。似乎这是在lua中实现它的唯一方法。此外,我必须在 [unit]={} 后跟 at[unit].data={} 创建一个表格,它可以按预期工作,我希望它看起来更干净,并且我能够避免那些混乱的代码。要检查它的表现如何。再次感谢您!
猜你喜欢
  • 2018-06-21
  • 2017-08-13
  • 2021-04-13
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多