問題タブ [lua-table]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ で Lua テーブルを作成し、それを Lua 関数に渡すにはどうすればよいですか?
C++ にはmap<string, string>
、不明な数のエントリを含む があります。Lua関数がデータをテーブルとして使用できるように、これをLua関数に渡すにはどうすればよいですか?
lua - Luaで連想テーブルをすばやく初期化するには?
Lua では、次の方法でテーブルを作成できます。
ただし、連想テーブルを作成したい場合は、次の方法で行う必要があります。
以下はエラーになります:
私の最初のコードスニペットと同様にそれを行う方法はありますか?
lua - Luaテーブルを値でコピーするにはどうすればよいですか?
最近、次のような Lua コードを少し書きました。
変数は、Lua のテーブル自体の値ではなく、匿名テーブルへの参照を保持するため、明らかに、それは私がやりたかったことではありません。これはProgramming in Luaで明確に説明されていますが、忘れていました。
問題はcopy = a
、値のコピーを取得する代わりに、何を書くべきかということa
です。
memory-management - テーブルの Lua ガベージ コレクション、ネストされたテーブル
[Lua のマニュアルを読みましたが、確かな回答が得られませんでした。]
インデックス付き配列として機能する Lua テーブルがあるとします。
このテーブルを処分するにはどうすればよいですか? myArray を nil に設定するだけですか? または、配列を反復処理して、インデックス付きの各要素を nil に設定する必要がありますか?
同様に、辞書として機能する Lua テーブルがあるとします。
「myDictionary」を nil に設定することはできますか、それとも反復する必要がありますか?
最後に、テーブルをネストした場合、メモリ管理に関してはどうすればよいでしょうか? 例えば
これらの各サブテーブルを反復処理して nil に設定する必要がありますか? 助けてくれてありがとう。
lua - Luaテーブルが空(エントリが含まれていない)かどうかを判断する最も効率的な方法は?
テーブルが空であるかどうか(つまり、現在、配列スタイルの値もdictスタイルの値も含まれていないか)を判断する最も効率的な方法は何ですか?
現在、私は使用していnext()
ます:
より効率的な方法はありますか?
注:#
演算子はテーブル内の配列スタイルの値のみを操作するため、ここでは不十分です。どちらも0を返すため、#{test=2}
区別できません#{}
。また、テーブル変数がであるかどうかを確認するだけでnil
は不十分であることに注意してください。 nil値ですが、エントリが0のテーブル(つまり{}
)。
merge - 両方にある要素を上書きする2つのテーブルをマージするにはどうすればよいですか?
特定のアイテムが両方にある場合は、2つのテーブルをマージし、2番目のコンテンツを最初のテーブルに上書きする必要があります。私は見ましたが、標準ライブラリはこれを提供していないようです。そのような関数はどこで入手できますか?
lua - Lua でのテーブルの連結
元の投稿
Lua には組み込み関数がないため、テーブルを一緒に追加できる関数を探しています。私はかなりグーグルで検索し、遭遇したすべてのソリューションを試しましたが、どれも正しく機能していないようです.
シナリオは次のようになります。アプリケーションに組み込まれた Lua を使用しています。アプリケーションの内部コマンドは、テーブルの形式で値のリストを返します。
私がやろうとしているのは、そのコマンドをループで再帰的に呼び出し、返された値を再びテーブルの形式で前の反復からテーブルに追加することです。
編集
今後この投稿に出くわす人は、@gimf が投稿した内容に注意してください。Lua のテーブルは他の何よりも配列に似ているため (リスト コンテキストであっても)、1 つのテーブルを別のテーブルに追加する本当の正しい方法はありません。最も近い概念は、テーブルのマージです。その点については、記事「Lua - テーブルをマージしますか?」を参照してください。
binding - Luaバインディング:テーブルとユーザーデータ
C ++クラスのLuaバインディングを作成する場合、テーブルまたはuserdataオブジェクトを返す必要がありますか?
それぞれの方法の長所と短所を知っている人はいますか?
c++ - C++ から Lua テーブルを反復処理していますか?
Luaから C++ にテーブルをロードしようとしていますが、うまくいきません。私は最初の繰り返しをうまくやっていますが、lua_next への 2 回目の呼び出しでクラッシュします。何か案は?
ルアファイル:
C++ ファイル - 最初にこれを行いました:
次に、リファレンスマニュアルから試しました:
そして最後にこれ:
当然、L は lua_State* であり、初期化してファイルを解析しています。
編集: Jesse Beder の回答に応えて、ロガーを使用してこのコードを試しましたが、まだ動作しません。
この出力が得られました:
ジェシー、あなたが言ったことはすべて真実のようです。しかし、それでも次の反復に進むことができません。
Edit2: 正確なコードを新しいプロジェクトにコピーしようとしましたが、周囲のすべてのクラスと、あちこちに含める必要のないものをスキップして動作します。しかし、ここではそうではありません。
Edit3: もう少し 絞り込みました。2D エンジンとしてhgeを使用しています。以前のすべてのコードを関数テストに入れました。
私が理解している限り、hge は lua では何もしません。 これは、私が作成した小さなテストのソース コードです。hge 1.81 のソースはこちらです。
Edit4: 質問のサイズが制御不能になっていますが、仕方がありません。これは、私が削減できた最小のコードです。