钩子机制的行为

我对钩子机制有一个奇怪的行为不理解,希望得到一些帮助。

这是一个很简单的例子,因为我正在学习这种语言:

foo函数:

function foo() print("我在foo函数中") end

一些数据函数:

function data() print("这是数据:") end

然后我设置钩子:

debug.sethook(data, "c")

奇怪的是,当我调用foo函数时,我得到的输出是:

这是数据:
这是数据:
这是数据:
这是数据:
我在foo函数中

这就是整个程序,没有什么隐藏的东西会导致这种结果。

我想知道为什么钩子被调用了4次而不是1次?

点赞
用户107090
用户107090

在下面的程序中,我只看到了 3 条消息而不是 4 条。解释是调用钩子在设置后对每个调用都进行了调用:fooprinttostring,由 print 调用的 tostring

function foo() 
    print("我在 foo 函数里面") 
end

function data() 
    print("这是数据:", debug.traceback()) 
end

debug.sethook(data, "c")

foo()
2012-10-02 22:17:22