如何提取函數體(作爲字符串)?例如,我調用C函數,從堆棧中提取函數,檢查類型是否爲LUA_TFUNCTION
,以及我需要做些什麼來獲得它的主體?提取函數體
Q
提取函數體
0
A
回答
2
當函數在堆棧上時,它已經被編譯。你可以嘗試做的最好的是lua_dump
然後decode the bytecode。
-2
調試庫可以做到這一點。 Lua C API沒有它,你會想爲此調用一個Lua函數。
2
您可以用字符串參數「S」調用lua_getinfo
,然後檢查lua_Debug結構的「source」成員。如果該字符串以'@'開頭,那麼它就是一個文件名,如果你想要源代碼,你需要重新讀取該文件(Lua只是逐步讀取文件來加載該函數,並且從未將其保存爲字符串)。否則,它的內容將是函數,定義加載塊的字符串。
注意,在這兩種情況下返回值將是整個塊是定義問題的功能source
。您可以使用結構體中定義的其他字段將字符串縮小爲僅限於該函數:但請注意,這不能保證您能夠加載該字符串以獲得相同的行爲(函數定義可能指的是例如在外部範圍中定義的變量)。
相關問題
- 1. 提取函數
- 2. PHP提取()函數
- 3. 提取核心數據實體,但不提取子實體
- 4. postgresql提取函數源
- 5. 提取函數名中宏
- 6. 提取體
- 7. 提取實體
- 8. 正則表達式來提取函數體
- 9. JMSTranslationBundle提取實體靜態函數中的轉換鍵
- 10. 使用PowerShell從文件中提取函數體
- 11. php提取函數獲取變量值
- 12. 實體提取庫
- 13. Lucene實體提取
- 14. 提取和評估的數學函數
- 15. 提取C函數的參數類型
- 16. R餘數函數,提取特定值
- 17. 從函數中提取數組值
- 18. 使用CGPDFScanner提取字體數據
- 19. 使用用戶窗體提取數據
- 20. C++從結構體deque提取數據
- 21. 格式化實體提取的數據
- 22. 鐺 - 獲取函數的主體
- 23. 如何從input()函數體中讀取?
- 24. Julia:獲取函數的主體
- 25. 函數提取和特殊字符
- 26. 字符串函數從URL中提取
- 27. tar提取的回調函數
- 28. 小於函數提取指針
- 29. #標籤提取函數編程
- 30. 提取Erlang的C函數簽名
-1所有調試庫函數都是根據API函數定義的,如[lua_getinfo](http://www.lua.org/manual/5.1/manual.html#lua_getinfo)。 –