Loops Lua表//循环//Wow加载项//索引作为变量
我发现游戏函数获取特定值的效率非常低。我想尝试一次从函数中获取所有值,将其放入表中,然后通过索引而不是循环多次访问它Loops Lua表//循环//Wow加载项//索引作为变量,loops,lua,add-on,Loops,Lua,Add On,我发现游戏函数获取特定值的效率非常低。我想尝试一次从函数中获取所有值,将其放入表中,然后通过索引而不是循环多次访问它 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] 我仍然不能用我得到
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的值创建索引
有没有可能让它按照我想要的方式工作,这样我就可以得到包含所有结果的表,而不是循环中的最后一个结果?我可以在循环过程中打印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插入数据,而不是为所有循环插入数据
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
在这个循环中,单元
不会改变。因此,对于从1
到aura\u count
的每个j
,您将在[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
你只需要做[a10]={….
围绕值的[
使表构造函数将变量值而不是标识符作为预期的键值你的示例表没有意义。at={[“player”]={132123={12332112323121123231}
什么是a10
?132123
或231
?两者不能同时存在time@Piglet嗨,是的,当我想展示一个表格的例子时,这是我的错误。它应该是相同的值,(我编辑了它)a10是一个数字,所有其他的都是字符串/数字/布尔值。我无法发布整个代码,但我的其余代码循环[unit],令人惊讶的是,它可以按预期工作并插入我的[unit]。问题是我的[a10]只插入一个值,而这个值等于循环中的最后一个值,因此精确到a10=GetAuraWithIndex(aura_count)在[unit]。数据[j]={[a10]={a1、a2、a3、a4、a5、a6、a7、a8、a9、a10}}这是我想要避免的,我使用等于a10的UnitID和SpellID访问我的表。如果我写入表数据[j],我需要在表中循环找到它。使用[a10]访问使用a10而不是j会更有效吗?我不知道你的代码,我只能猜测。你抱怨只有最后一个条目。所以我向你展示了如何存储多个条目。非常感谢你,我希望自己能让它看起来更干净。似乎这是在lua中实现它的唯一方法。此外,我必须制作一个表在[unit]={}后面跟着[unit].data={}它按预期工作,我希望它看起来更干净,并且我能够避免混乱的代码。我将检查它的性能。再次感谢您!
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