関数本体を(文字列として)どのように抽出できますか?例えば、私はC関数を呼び出し、スタックから関数を抽出し、型がLUA_TFUNCTION
であるかどうかを確認し、その体を得るために何をする必要がありますか?関数本体を抽出する
0
A
答えて
2
この関数がスタック上にある場合、関数はすでにコンパイルされています。あなたがしようとすることができる最高はlua_dump
であり、次にdecode the bytecodeです。
-2
デバッグライブラリでこれを行うことができます。 Lua C APIにはありません。この目的のためにLua関数を呼びたいと思うでしょう。
2
文字列パラメータ「S」を使用してlua_getinfo
を呼び出し、lua_Debug構造の「source」メンバをチェックすることができます。その文字列が '@'で始まる場合はファイル名であり、ソースを必要とする場合はファイルを再読み込みする必要があります(Luaはファイルをインクリメンタルに読み取って関数をロードし、文字列として保存しません)。それ以外の場合、その内容は機能がで定義されたチャンクとしてロード文字列になります。
なお、いずれの場合、当該機能を定義したチャンク全体が返されますsource
インチ構造体に定義されている他のフィールドを使用して、その関数だけに文字列を絞り込むことができます。ただし、同じ動作を得るために、その文字列を読み込むことはできません(関数定義はたとえば、外部スコープで定義された変数を参照してください)。
関連する問題
- 1. エリクサーメタプログラミング:関数本体のリストを関数本体に挿入する
- 2. 関数の本体名を取得するか、テスト本体
- 3. 関数を抽出する
- 4. メッセージ本体のURLを抽出するためのOutlook REST API
- 5. 本体のロード後に関数が呼び出されない
- 6. 関数本体がありません
- 7. コンポーネント本体の反応関数
- 8. SyntaxError:missing} jqueryの関数本体の後に
- 9. javascript/html SyntaxError:missing}関数本体の後に
- 10. JavaScript SyntaxError:missing}関数本体の後に
- 11. GASコンテンツサービスを使用してPOST本体を抽出する方法
- 12. 関数呼び出しから関数呼び出し名を抽出する
- 13. Firebase用のクラウド関数:Get要求を出して本体を返す
- 14. Julia:関数の本体を取得する
- 15. sqlplusで関数またはプロシージャの本体をダンプする
- 16. 抽象基本クラスメンバ関数から純粋仮想関数を呼び出しますか?
- 17. C++:シングルトンメソッドを呼び出すと、関数宣言者の後に関数本体が返されます。
- 18. なぜ矢印関数は本体の関数呼び出しを受け入れますか?
- 19. $ _FILES変数のPHP抽出関数
- 20. BASHでは、関数本体で関数名を取得できますか?
- 21. 抽象クラスで抽象関数を呼び出す方法
- 22. PHPの抽出オブジェクトサイクリングオブジェクト自体
- 23. URLからHTTPクエリ引数を抽出するPostgreSQL関数
- 24. 文字列からのみ数値を抽出する関数
- 25. 行の数値の要約を抽出する関数R
- 26. 再帰関数:PHP関数自体を呼び出す
- 27. イベント抽出とN進関係抽出
- 28. Rパッケージで使用する関数を抽出するには?
- 29. 本体がコンストラクタを呼び出すと、コンストラクタは関数を呼び出し、関数を呼び出そうとしたときにクラッシュします。
- 30. Promiseチェーンでの関数の抽出
-1すべてのデバッグライブラリ関数は、[lua_getinfo](http://www.lua.org/manual/5.1/manual.html#lua_getinfo)などのAPI関数の観点から定義されています。 –