問題タブ [metatable]

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.

0 投票する
0 に答える
326 参照

lua - すべてのメタ可能なコンテンツを印刷する

私はテーブルを持っています:

そして、私は汚いが機能するコードを持っています:

その電報ボット。名前、日付、時間で農場について尋ねられると、それは問題ありません。

私の問題はelseステートメントの近くにあります。bot に農場と日付について質問したい。「At 16-6-2014, at farm "knk" will be 2 farms. At 17 - 2 agent. At 18 - 3 agent」のようなリストを返す必要があります。

シンプルな table.concat はうまくいきませんでした。

0 投票する
2 に答える
363 参照

c - C でネストされた Lua メタテーブル

3D シーンで、Lua を使用して移動したい位置を持つオブジェクトがあります。

例えば。box.position.x = 10

ボックスにはメタテーブル ("Object") があり、位置 ("Vec") もあります。オブジェクトには__newindex__indexC 関数を呼び出すための と がそれぞれ設定されてNewIndexObjectIndexObjectます。Vec (NewIndexVecおよびIndexVec) と同じです。

オブジェクトには ID があるため、シーンに保存されているリストで識別できbox.positionます。アクセスされたときにすべて問題なく、C 関数 IndexObject が呼び出され、スタックから ID を抽出できます。box.position.x = 10「NewIndexVec」が実行されたときです。が呼び出され、スタック上の唯一のものは {table, x, 10} であるため、オブジェクトを識別して x 位置を変更する方法はありません。

値をローカル状態にプッシュする方法はありますか? ヘルプ!

更新:コードを可能な限り要約した以下で、すぐに返信していただきありがとうございます。このコードを実行すると動作するように見えますが、行き詰まっているところにコメントがあります。配列の最初のオブジェクトを取得しているだけですが、ID で選択する必要があります。よろしくお願いします

0 投票する
1 に答える
117 参照

lua - メタテーブルの問題

したがって、参照する変数がテーブルに含まれていない場合、lua がテーブルのメタテーブルを参照することはわかっていますが、テーブルにまだ存在しない変数を設定しようとすると、代わりにメタテーブルに設定されるのは間違っているようです。 .

ここに私が意味するものの例があります

このコードでは、参照しているテーブルに設定する代わりに、メタテーブル変数を置き換えます。

ただし、これはこのコードでは発生しません

メタテーブルとネストされたテーブルを使用する場合、さらに作業が必要ですか? または、これを回避する方法はありますか?

0 投票する
0 に答える
877 参照

lua - Lua カスタム オペレーター

演算子「!」を作成しようとしています 印刷関数を返します。次のエラーが表示されます。

私のコードは以下の通りです:

http://lua-users.org/wiki/CustomOperatorsのテクニック #3はほぼ同じ方法を使用しているため、これは機能するはずです。

0 投票する
1 に答える
450 参照

c - LuaJit - モジュール/パッケージからメタテーブルを取得し、ユーザーデータに割り当てます

次のようなモジュールmymodvector2_t内にあるカスタム構造体のメタテーブルがあるとします。

vector2_tそして、別のスクリプトには、引数として を受け取る必要があるこのコールバック/イベント リスナー関数があります。

ここで、C/C++ からそのコールバック/イベント リスナー関数を呼び出し、そのインスタンスをvector2_t(関連付けられたメタテーブルと共に) その関数にパラメーターとして渡す必要があります。

vector2_t私は少し迷っており、そのインスタンスを関数パラメーターとして渡す方法がわかりません。たくさんのコードを投稿して申し訳ありませんが、正しく説明したことを確認したかったのです。

0 投票する
1 に答える
1038 参照

lua - Lua テーブルの長さ関数のオーバーライドが機能しない

#Lua でテーブルの長さ演算子 ( ) を変更するにはどうすればよいですか?マニュアルでは、__len関数をメタテーブルに割り当ててから、そのメタテーブルをオーバーライドしたいテーブルに割り当てることを提案していますが、これは期待どおりに機能しませんか? C側でこれをオーバーライドするオプションはありません。

0 投票する
1 に答える
5481 参照

lua - newproxy とは何ですか? どのように役立ちますか?

昨日Luaをいじっていて、「newproxy」機能に出くわしました。

http://wiki.roblox.com/index.php?title=Function_dump/Basic_functions#newproxy

なんとなくわかるのですが、どのように役立つのかわかりません。メタテーブルが添付された空のユーザーデータ オブジェクトが作成されることはわかっています (引数が true の場合)。

newproxy はどのように役立ちますか? これをいじりながら私がやったことの例を次に示します。

0 投票する
1 に答える
118 参照

lua - lua メタテーブル ヘルプ (ゲーム内でのモンスターの生成)

メタテーブルを使用してゲーム用の新しいモンスターを作成するのに問題があります。正確なコピーを作成することはできますが、たとえば新しい ID を使用して新しいネズミやトカゲを生成することはできません。

これにより、変数 testrat の下に新しいラットが作成され、コンソールに「a rat」と「1」が出力されます。作成時にラットの新しい ID 番号を指定する方法がわかりません。助けていただければ幸いです。メタテーブルは私を狂ったように混乱させています!

0 投票する
1 に答える
145 参照

lua - これにより C スタック オーバーフローが発生するのはなぜですか?

を使用してこの問題を解決できることは承知していrawsetますが、次のコードで C スタック オーバーフローが発生する理由が気になります。

0 投票する
1 に答える
123 参照

lua - このアンパックの問題を解決するにはどうすればよいですか?

テーブルにさらに使用法を追加する Array クラスを作成しています。2 つのテーブルを結合できるメタメソッドがあります。例:

Array(5) .. Array(6, 10) は {5, 6, 10} を与えるはずです

これを行うために 2 つのループを使用できることは承知していますが、コードをできるだけクリーンで効率的なものにしようとしています。アンパックで問題が発生しました。2 つのテーブルを連結しようとしていますが、すべての値が含まれていません。ここに私のコードと出力があります:

OUTPUT: 5, 6, 9 (I want it to be "5, 12, 13, 6, 9")