這個其實不止是匿名函式的問題 這個的概念其實是涉及到了閉包 如果不太瞭解閉包可以暫時先不去考慮理解
函式A返回值是一個匿名的函式 這個匿名函式會改變函式A內的區域性變數i
匿名函式每次被呼叫時 都會使A內的區域性變數自增1並且返回這個值
你在執行時 c1 被賦予了這個匿名函式 所以每次呼叫c1都會輸出這個每次都會自增的區域性變數i
第一個問題:
你不要把lua 原始碼裡面的引數和lua擴充套件的c函數里面的引數混淆了。lua那邊,是不管什麼指標的(那個pLc這邊函數里面的引數,當然要求是pL指標。
第二個問題:
對於一個c函式來說,它必須返回一個int值。這個int值告訴lua,它返回幾個引數到lua裡面去(可以是返回0個引數;如果是0,那麼就返回0)。
第三個問題:
lua_tonumber就是把lua堆疊裡的相應索引的值作為一個整數返回。你這條語句裡就是把lua那邊傳給來的引數賦給了num變數。
這個其實不止是匿名函式的問題 這個的概念其實是涉及到了閉包 如果不太瞭解閉包可以暫時先不去考慮理解
函式A返回值是一個匿名的函式 這個匿名函式會改變函式A內的區域性變數i
匿名函式每次被呼叫時 都會使A內的區域性變數自增1並且返回這個值
你在執行時 c1 被賦予了這個匿名函式 所以每次呼叫c1都會輸出這個每次都會自增的區域性變數i
第一個問題:
你不要把lua 原始碼裡面的引數和lua擴充套件的c函數里面的引數混淆了。lua那邊,是不管什麼指標的(那個pLc這邊函數里面的引數,當然要求是pL指標。
第二個問題:
對於一個c函式來說,它必須返回一個int值。這個int值告訴lua,它返回幾個引數到lua裡面去(可以是返回0個引數;如果是0,那麼就返回0)。
第三個問題:
lua_tonumber就是把lua堆疊裡的相應索引的值作為一個整數返回。你這條語句裡就是把lua那邊傳給來的引數賦給了num變數。