我对钩子机制有一种奇怪的行为,我不明白并且id喜欢一些帮助。
这是一个非常简单的例子,因为我正在研究这门语言:
foo功能:
function foo () print ("i'm in foo") end
一些数据功能:
function data () print ("This is the data : ") end
然后我做了钩子设置:
debug.sethook(data , "c")
有线的事情是,当我打电话给foo时,这是我得到的输出:
This is the data :
This is the data :
This is the data :
This is the data :
i'm in foo
这是整个程序,所以没有隐藏的东西可能导致它。
我想知道为什么挂钩被调用4次而不只是一次?
答案 0 :(得分:3)
在下面的程序中,我只看到3条消息,而不是4条。解释是每次调用后都会调用调用挂钩:foo
,print
,{{1} },由tostring
调用。
print