問題タブ [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.
types - Luaのテーブルまたはメタテーブルの「タイプ」を比較できますか?
ロードオブザリングオンライン(LOTRO)ベータLuaスクリプト機能でAPI関数を呼び出しています。APIメソッドは、指定されたクラス属性の「タイプ」に含まれるClassAttributesという「タイプ」を返します。type()
戻り値を呼び出すと、テーブルと表示されるため、「タイプ」と言います。
タイプまたはメタテーブルタイプを確認する方法はありますか?例えば:
更新 次のコードは私が使用するものです:
そしてここに出力があります:
player:GetClass():24
Turbine.Gameplay.Class.Captain:24
あなたはキャプテンを演じています
lua - メタテーブルを使用してすべてのインデックスをテーブルに変更するにはどうすればよいですか?
テーブル内のすべてのインデックスが1つ上の位置にシフトされるように、メタテーブルを作成しようとしています(つまり、t[i]
を返す必要がありt[i+1]
ます)。テーブルは最初の要素としてインデックス1を使用して定義されているため、これを行う必要がありますが、最初の要素としてインデックス0を使用するプログラムとインターフェイスする必要があります。Luaでプログラミングを読んで以来、プロキシテーブルでやりたいことは達成できると思いますが、うまく機能していないようです。これまでのところ、私はこれを持っています:
ただし、これでは期待した結果は得られません。実際、値はまったく返されません(すべてのルックアップはnil
)。これを行うためのより良い方法はありますか、それとも私は何かが足りないだけですか?
c# - MetaTableからのMetaColumnの追加/削除
MetaTableから列を追加/削除したいのですが。しかしtable.Column
、タイプReadOnlycollection<MetaColumn>
です。
テーブルから列を変更、追加、または削除するにはどうすればよいですか?
ありがとうございました。
mysql - MySQLでテーブルコメントに依存する
MySQLデータベースのテーブルを追加/削除/変更するアプリケーションを構築しています。一部のテーブルには特定のアプリケーションロールがあり、アプリケーションによってそのようにタグ付けおよび識別される必要があります。このメタ情報を確実に保存するためにテーブルコメントに依存できますか?
oop - Lua メタテーブル クラスのデストラクタ
次の Lua メタテーブル クラスがあります。デストラクタを追加して、特定の条件が発生したときに、作成されたオブジェクトを破棄し、その値を nil に設定するにはどうすればよいですか?
lua - Lua は大文字と小文字を区別しないメソッド呼び出しをサポートできますか?
C++ アプリのデータ記述言語として Lua を使用しています。SLB 2.0 を使用して Lua にバインドされた多数の C++ クラスがあります。「SetPos」や「SetName」などのメソッドがバインドされています。'pos' または 'name' としてキー付けされた値を持つテーブルを使用して、位置または名前 (たとえば) を指定します。キーを取得し、「set」を先頭に追加し、メソッドが存在する場合はメソッドを呼び出すことができるようにしたい (存在しない場合があります)。それは可能ですか?もしそうなら、何か提案はありますか?
バインドされたメソッドを小文字にすることができることはわかっていますが、バインドされているメソッドと同じままにしておくことをお勧めします (これは私のフォールバックかもしれません)。命名基準に基づいてメソッド名を作成することもできますが、大文字と小文字を区別しない方がエラーが発生しにくくなります。
メタテーブルを使用してこれを解決できるLuaのトリッキーな部分があるはずだと思いますが、自分で解決することはできませんでした.
助言がありますか?
ありがとう!
lua - Luaのメタテーブルを無視しますか?
私はLuaメニューに取り組んでおり、次のようなインスタンスを作成するMenuクラスを取得しました。
それは明らかにメニューのすべてのコードではありませんが、それは私の問題を説明するのに十分です。メニューは問題なく機能していますが、印刷は機能していません。問題は、再帰的な方法を使用してすべてのサブメニューを印刷していますが、最初のメニューを何度も印刷し続けることです。原因はわかっていますが、修正方法がわかりません。コードは次のとおりです。
そして問題は(私が間違っているなら私を訂正するのだと思いますか?)、10行目if self.subMenus ...
では常に真実であるということです。subMenuは常に存在しますが、存在しなかった場合でも、メニュー(self)はサブメニューを検出しないため、subMenuを持つメタテーブルをチェックし、11行目でメタテーブルサブメニューのforループを実行します。 。つまり、それは再び自分自身を描画します。そしてまた。そしてまた。では、メタテーブルを1か所でバイパスする方法はありますか?それとも私も正しいですか、それが原因で繰り返し印刷されているのでしょうか?
lua - Luaは奇妙な数の引数を持つメタメソッドを許可しますか?
たとえば、__index
2つの引数を取るメタメソッドを宣言してから、次のようなことを行うことはできますmyuserdata[somearg1, somearg2]
か?私はそれを使いたいというわけではなく、なぜそれが役立つのか考えているわけではありません。c++をLuaにバインドすることを扱うライブラリで、権利を強制できるかどうか、そして強制する必要があるかどうか疑問に思っています(__call
もちろんメタメソッドを除く) metamethodとしてバインドされた関数の引数の数。
variables - Lua メタテーブル変数の宣言
何が起こっているのかを十分に理解していないため、この質問に何と名前を付けるべきかわかりませんでした.(自由に編集してください)
以下のコードを検討してください。
後で変数 (ox と self.y) の違いは何ですか?
変数をprint_r するとtable
、x のみが返されます。ただし、 と の両方table.x
にtable.y
アクセスできます。これは、両者の間に違いがあることを認識させてくれます。
誰かが違いを説明できますか?変数を異なる場所に配置する理由は何ですか?
object - コロナ SDK オブジェクトを削除するには?
ゲームからオブジェクトを削除するのに問題があります。問題は、(メタテーブルから作成された) プレイヤー クラスがあり、その中にスプライトという変数があり、画面上に描画するイメージ スプライトのアドレスを保持しています。そのため、オブジェクトを作成するときにスプライトをすぐに描画しません。そのため、関数描画を作成しました(これは、私が持っているものを説明するためのものです)。game.luaでその関数を呼び出してプレーヤーを描画し、その後、プレーヤーのインスタンスを削除したい(画面上の画像も消えるように)...それだけです。 remove(player) とそれらの1つがエラーをスローし(フィールド 'removeSelf' (nil値)を呼び出そうとしました)、もう1つは正常に動作しますが、プレーヤーがまだそこにあるという事実は変わりません(アクセスできます)それは機能であり、スプライトはまだ画面に表示されています.. . ここに私のコードがあります: