問題タブ [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.
lua - すべてのメタ可能なコンテンツを印刷する
私はテーブルを持っています:
そして、私は汚いが機能するコードを持っています:
その電報ボット。名前、日付、時間で農場について尋ねられると、それは問題ありません。
私の問題はelseステートメントの近くにあります。bot に農場と日付について質問したい。「At 16-6-2014, at farm "knk" will be 2 farms. At 17 - 2 agent. At 18 - 3 agent」のようなリストを返す必要があります。
シンプルな table.concat はうまくいきませんでした。
c - C でネストされた Lua メタテーブル
3D シーンで、Lua を使用して移動したい位置を持つオブジェクトがあります。
例えば。box.position.x = 10
ボックスにはメタテーブル ("Object") があり、位置 ("Vec") もあります。オブジェクトには__newindex、__indexC 関数を呼び出すための と がそれぞれ設定されてNewIndexObjectいIndexObjectます。Vec (NewIndexVecおよびIndexVec) と同じです。
オブジェクトには ID があるため、シーンに保存されているリストで識別できbox.positionます。アクセスされたときにすべて問題なく、C 関数 IndexObject が呼び出され、スタックから ID を抽出できます。box.position.x = 10「NewIndexVec」が実行されたときです。が呼び出され、スタック上の唯一のものは {table, x, 10} であるため、オブジェクトを識別して x 位置を変更する方法はありません。
値をローカル状態にプッシュする方法はありますか? ヘルプ!
更新:コードを可能な限り要約した以下で、すぐに返信していただきありがとうございます。このコードを実行すると動作するように見えますが、行き詰まっているところにコメントがあります。配列の最初のオブジェクトを取得しているだけですが、ID で選択する必要があります。よろしくお願いします
lua - メタテーブルの問題
したがって、参照する変数がテーブルに含まれていない場合、lua がテーブルのメタテーブルを参照することはわかっていますが、テーブルにまだ存在しない変数を設定しようとすると、代わりにメタテーブルに設定されるのは間違っているようです。 .
ここに私が意味するものの例があります
このコードでは、参照しているテーブルに設定する代わりに、メタテーブル変数を置き換えます。
ただし、これはこのコードでは発生しません
メタテーブルとネストされたテーブルを使用する場合、さらに作業が必要ですか? または、これを回避する方法はありますか?
lua - Lua カスタム オペレーター
演算子「!」を作成しようとしています 印刷関数を返します。次のエラーが表示されます。
私のコードは以下の通りです:
http://lua-users.org/wiki/CustomOperatorsのテクニック #3はほぼ同じ方法を使用しているため、これは機能するはずです。
c - LuaJit - モジュール/パッケージからメタテーブルを取得し、ユーザーデータに割り当てます
次のようなモジュールmymodvector2_t内にあるカスタム構造体のメタテーブルがあるとします。
vector2_tそして、別のスクリプトには、引数として を受け取る必要があるこのコールバック/イベント リスナー関数があります。
ここで、C/C++ からそのコールバック/イベント リスナー関数を呼び出し、そのインスタンスをvector2_t(関連付けられたメタテーブルと共に) その関数にパラメーターとして渡す必要があります。
vector2_t私は少し迷っており、そのインスタンスを関数パラメーターとして渡す方法がわかりません。たくさんのコードを投稿して申し訳ありませんが、正しく説明したことを確認したかったのです。
lua - Lua テーブルの長さ関数のオーバーライドが機能しない
#Lua でテーブルの長さ演算子 ( ) を変更するにはどうすればよいですか?マニュアルでは、__len関数をメタテーブルに割り当ててから、そのメタテーブルをオーバーライドしたいテーブルに割り当てることを提案していますが、これは期待どおりに機能しませんか? C側でこれをオーバーライドするオプションはありません。
lua - newproxy とは何ですか? どのように役立ちますか?
昨日Luaをいじっていて、「newproxy」機能に出くわしました。
http://wiki.roblox.com/index.php?title=Function_dump/Basic_functions#newproxy
なんとなくわかるのですが、どのように役立つのかわかりません。メタテーブルが添付された空のユーザーデータ オブジェクトが作成されることはわかっています (引数が true の場合)。
newproxy はどのように役立ちますか? これをいじりながら私がやったことの例を次に示します。
lua - lua メタテーブル ヘルプ (ゲーム内でのモンスターの生成)
メタテーブルを使用してゲーム用の新しいモンスターを作成するのに問題があります。正確なコピーを作成することはできますが、たとえば新しい ID を使用して新しいネズミやトカゲを生成することはできません。
これにより、変数 testrat の下に新しいラットが作成され、コンソールに「a rat」と「1」が出力されます。作成時にラットの新しい ID 番号を指定する方法がわかりません。助けていただければ幸いです。メタテーブルは私を狂ったように混乱させています!
lua - これにより C スタック オーバーフローが発生するのはなぜですか?
を使用してこの問題を解決できることは承知していrawsetますが、次のコードで C スタック オーバーフローが発生する理由が気になります。
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")