2

私は理解できないフックメカニズムで奇妙な動作をしており、idはいくつかの助けが大好きです.

私は言語を勉強しているので、これは非常に簡単な例です:

フー関数:

 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

これはプログラム全体なので、それを引き起こす可能性のある隠れたものはありません。

フックが1回だけでなく4回呼び出されるのはなぜだろうと思っていましたか?

4

1 に答える 1

3

以下のプログラムでは、メッセージが 4 つではなく 3 つしか表示されません。説明は、コール フックが設定された後、コールごとにコール フックが呼び出されることです: fooprinttostringによってコールされprintます。

function foo () print ("i'm in foo") end
function data () print ("This is the data : ",debug.traceback()) end
debug.sethook(data , "c")
foo()
于 2012-10-02T22:17:22.993 に答える