私はC Fuzzy APIを使用しています。ファイルに含まれている汎用モジュールをロードして、mycalculator.luaと言うことができます。これはうまくいきますが、後で別のファイルA.luaを実行しようとすると 'mycalculator'が必要になります。mycalculator.luaファイルがファイルシステム上で再ロードされない限り動作しません。私はそれをシステムにロードし、ファイルシステムにmycalculator.luaを持たずに利用できるようにしようとしています。それは、それを再度ロードせずに定義を保持するための方法はありますか?基本的に私はmycalculator.luaを文字列に変換して実行します。私はmycalculator.luaファイルをファイルシステムに入れたくないので、文字列として渡して、次の文字列に要求することができます。ファイルをロードせずに関数定義をLuaに追加するには?
1
A
答えて
2
単にLuaスクリプトを実行してからLuaモジュールをロードするまでの違いです。 Luaモジュールをロードする場合は、実際にスクリプトと同じようにLuaモジュールをロードする必要があります。require
を呼び出してください。
あなたがLuaを初めて使っているようだから、これを説明してください。あなたはおそらくLuaスクリプトでこのようなコードを見たでしょう:
require 'mycalculator'
これはLuaにとって特別な記述ではありません。それは関数呼び出しです。それのためだけのいくつかの構文糖です:
require('mycalculator')
のLuaの関数はNAME VALUE
構文の代わりNAME(...)
構文で呼び出すことができますが、それはあなただけは一つのパラメータを送信することができます。また、パラメータはリテラル(またはテーブルコンストラクタ)でなければなりません。
CからLua require
関数を呼び出すには、Luaスタックを使用する必要があります。 lua_getfield(L, LUA_GLOBALSINDEX, "require");
を使用してグローバルテーブルから関数をフェッチする必要があります。次に、ロードするモジュールの名前を含む文字列をスタックにプッシュします。次に、lua_pcall
またはそれを呼び出すために関数を呼び出すLua関数を使用します。
関連する問題
- 1. PHPでは、ファイルをロードせずにファイルに行を追加する方法は?
- 2. tolua ++:LuaにエクスポートされたC++クラスにlua関数を追加
- 3. GUIステータスをコピーせずにCL_SALV_TREEにユーザ定義関数を追加することはできますか?
- 4. エンティティフレームワークにSQLユーザ定義関数を追加する方法は?
- 5. ユーザ定義関数のパラメータも追加するには?
- 6. 関数に定義されたリストに追加する
- 7. Luaでjava関数をロード
- 8. 追加要素を定義せずにコンパイル時にenumクラスサイズを取得
- 9. Visual Studio Excelアドインにユーザー定義関数を追加
- 10. jQueryでonclickに事前定義された関数を追加
- 11. 追加の関数/メソッド定義は、プログラムのメモリフットプリントを増加させますか?
- 12. リダイレクトせずにページをロードした後にファイルをロードする
- 13. ロード中にAngularJSファイルを追加する
- 14. Lua関数の追加構文
- 15. データベースを再クエリーせずに関係を追加する
- 16. Emacs:関数自体が定義されているファイルをロードする関数を定義します。
- 17. プロビジョニングプロファイルにデバイスIDを追加せずにiphoneにipaファイルをインストール
- 18. Luaで整数の後に小数点を追加する
- 19. フォワードはLuaで関数を定義しますか?
- 20. 別のluaファイルからluaファイルをロードして実行するには
- 21. typeclassの定義に追加の関数/コンビネータを追加する賛否両論は何ですか?
- 22. Visual Studioビルド定義 - ビルドに追加の(dll)ファイルを追加する方法?
- 23. モノビューのXIBファイル定義ビューにカスタムビューを追加する方法
- 24. 追加のグローバルオブジェクトを作成せずにネストされたクラス定義
- 25. RoRとRSpec:アクセッサを定義せずにコントローラインスタンス変数にアクセスするには?
- 26. Apache Stormでユーザー定義関数を追加する方法
- 27. データを追加せずにmongodbデータベースコレクションを作成するには?
- 28. テンプレート変数を定義せずに宣言できません
- 29. pthread定義者を継承せずにファイルを含む
- 30. before.jstreeに関数を追加
あなたはその文字列を置く場所が何ですか?文字列はファイルシステム上に魔法のように存在するわけではなく、いつも何らかのストレージが必要です。あなたはA.luaをどのように実行する予定ですか? – kikito