如何提取函數體(作爲字符串)?例如,我調用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. 使用PowerShell從文件中提取函數體
- 8. 提取C函數的參數類型
- 9. 從函數中提取數組值
- 10. 提取和評估的數學函數
- 11. Lucene實體提取
- 12. 格式化實體提取的數據
- 13. 使用用戶窗體提取數據
- 14. C++從結構體deque提取數據
- 15. 使用CGPDFScanner提取字體數據
- 16. 鐺 - 獲取函數的主體
- 17. 如何從input()函數體中讀取?
- 18. Julia:獲取函數的主體
- 19. 從DataRow或DataReader提取一個函數
- 20. 從C++中提取函數信息dll
- 21. 從結構初始化提取函數
- 22. D編譯時函數類型提取
- 23. 使用ida pro提取函數
- 24. React原生提取不是函數
- 25. Passportjs從isAuthenticated函數中提取用戶
- 26. 從wordpress函數中提取註釋url
- 27. ob_start回調函數提取輸出 - PHP
- 28. #標籤提取函數編程
- 29. 提取函數結果的行號
- 30. 使用pandas read_html函數提取表格?
-1所有調試庫函數都是根據API函數定義的,如[lua_getinfo](http://www.lua.org/manual/5.1/manual.html#lua_getinfo)。 –