Lua GetTrackDachievents返回数字而不是列表
我用它来制作一个插件 我的目标只是得到一个列表,列出玩家目前拥有的所有跟踪成就。文档似乎建议它应该返回一个列表,但我得到了一个数字。我的代码如下: 我跟踪了6项成就,其中4项在我测试的区域Lua GetTrackDachievents返回数字而不是列表,lua,world-of-warcraft,Lua,World Of Warcraft,我用它来制作一个插件 我的目标只是得到一个列表,列出玩家目前拥有的所有跟踪成就。文档似乎建议它应该返回一个列表,但我得到了一个数字。我的代码如下: 我跟踪了6项成就,其中4项在我测试的区域 Addon = LibStub("AceAddon-3.0"):NewAddon("LocationAchievements", "AceConsole-3.0", "AceEvent-3.0") function Addon:O
Addon = LibStub("AceAddon-3.0"):NewAddon("LocationAchievements", "AceConsole-3.0", "AceEvent-3.0")
function Addon:OnInitialize()
Addon:Print(ChatFrame1, "Successfully initialized")
end
function Addon:DisplayAchievements()
Addon:Print(ChatFrame1, UnitName("Player").." has changed to zone "..GetZoneText())
local achievements = GetTrackedAchievements()
Addon:Print(ChatFrame1, "Type of achievements variable: "..type(achievements))
Addon:Print(ChatFrame1, "Number of tracked achievements: "..GetNumTrackedAchievements())
end
Addon:RegisterEvent("ZONE_CHANGED_NEW_AREA", "DisplayAchievements")
当我进入一个新的区域时,我的聊天框会收到以下输出
克鲁蒙克已改为影月谷地带
成就变量类型:数字
跟踪成绩数:6
如何解决这个问题?我在这里做错了什么?发现了错误:
local achievements = {GetTrackedAchievements()}
Lua支持。它们以列表的形式出现,而不是数组或表/对象(在Lua中,数组和表实际上是相同的)
如果您想要某个索引:
value = select( index, GetTrackedAchievements() )
要迭代这些未知长度的值,请执行以下操作:
for val in pairs( GetTrackedAchievements() ) do
print(val)
end
可以使用列表和表调用
它们可以作为X参数反馈给另一个函数,事实上,print(gettrackdachievents())
将输出所有值,或者通过创建一个伪文本将其转换为一个表:{gettrackdachievents()}
,正如您已经发现的,类似于{1,2,3,[“foo”]=“bar}
与此相反,从表中的值形成一个列表,即解包:
x,y,z = unpack(tbl)
如果表
tbl
有三个以上的值,则丢弃其他值。它似乎返回多个值。你能再解释一下吗?用大括号包装函数调用,这样可以根据返回值构造一个表。