Lua GetTrackDachievents返回数字而不是列表

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

我用它来制作一个插件

我的目标只是得到一个列表,列出玩家目前拥有的所有跟踪成就。文档似乎建议它应该返回一个列表,但我得到了一个数字。我的代码如下:

我跟踪了6项成就,其中4项在我测试的区域

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
有三个以上的值,则丢弃其他值。

它似乎返回多个值。你能再解释一下吗?用大括号包装函数调用,这样可以根据返回值构造一个表。