Lua,包含函数的表

时间:2015-08-12 18:52:29

标签: function types lua lua-table

我使用的是魔兽世界API。我想找一个EventMessageFilter。我可以通过致电

来做到这一点
ChatFrame_GetMessageEventFilters("event")

要做到这一点,我必须传递一个聊天事件,就我而言CHAT_MSG_WHISPER_INFORM

所以根据位于

的API

http://wowprogramming.com/docs/api/ChatFrame_GetMessageEventFilters

此函数将返回一个表。所以我将该表命名为试图用这段代码打印其内容

local myNewTable = filterTable = ChatFrame_GetMessageEventFilters("CHAT_MSG_WHISPER_INFORM")
for i in pairs(myNewTable) do
    print(asd[i])
end

然后打印出类似

的内容
function: 00000312498vn27842934c4

我已经检查过

type(asd[i])

它确实是一个功能。但是我怎么能得到它的内容呢?我该如何处理?

2 个答案:

答案 0 :(得分:1)

  

我想找一个EventMessageFilter

你能详细说明吗?您正在寻找谁的过滤器以及您打算用它做什么?

  

它确实是一种功能。

这就是这个API的作用:返回一个注册为特定消息类型的过滤器的函数列表(通过ChatFrame_AddMessageEventFilter)。

  

但我怎样才能得到它的内容?

你做不到。 WoW API不提供任何反编译功能的工具。

如果您打算自己过滤聊天消息,则根本不需要调用此功能。只需致电ChatFrame_AddMessageEventFilter即可添加过滤器。

答案 1 :(得分:0)

所以我设法解决了我的问题,删除了已被另一个插件放置的当前过滤器,然后只添加我自己的过滤器。正如泥所指出的那样。 GMEF应该返回功能。我现在看到这是有道理的。但现在我已经制作了删除函数的代码。如果您想稍后重新添加它们,只需将它们存储在变量中,直到完成为止,但我不会在我的答案中包含它。我也觉得我的回答有点偏离主题了。但要回答我自己的问题。它应该返回函数,你无法看到这些函数的内容。这是我用来删除另一个插件放在那里的函数的代码。

function rekkFilters()
local myFilters = ChatFrame_GetMessageEventFilters("CHAT_MSG_WHISPER_INFORM")
  for i in pairs(myFilters) do
    ChatFrame_RemoveMessageEventFilter("CHAT_MSG_WHISPER_INFORM", myFilters[i])
  end
end
local myFilters = ChatFrame_GetMessageEventFilters("CHAT_MSG_WHISPER_INFORM")
rekkFilters()
local myFilters = ChatFrame_GetMessageEventFilters("CHAT_MSG_WHISPER_INFORM")
if myFilters[1] ~= nil then
  rekkFilters()
end