問題タブ [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 投票する
1 に答える
127 参照

lua - Lua メタテーブルはインデックスを作成しようとしていますか?

だからここに私が書いたいくつかのコードがあります:

メタメソッドを使えばエラーにはならないと思っていたの__indexですが、それでもattempt to call field ?エラーが発生します。それでもエラーがスローされると推測しているので、使用してキャッチできる方法はありますかpcall()

mt次のようになります。

そして無効:

このエラーは、表に記載されていないオペランドをユーザーが入力した場合にのみスローされます ( input > #fileFunc) 。

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

lua - Lua __metatable バイパス?

__metatable メタメソッドをエスケープする方法があるかどうか疑問に思っていました。私は1つがないことを知っていますが、私はこのようなことをしようとしていますが、明らかに __metatable はそれが起こらないようにブロックします:

ここで私がやろうとしているのは、単に __metatable フィールドを通り過ぎてエスケープし、既に 1 つある _G にメタテーブルを設定できるようにすることです。これが不可能であることは承知していますが、まだバイパスする機会があるかどうかお尋ねしたいのですが?

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

lua - next() は __pairs メタメソッドを探しますか?

一般に、構文は次のとおりです。

次と同等です。

しかし、メタメソッドがある場合tはどうなる__pairsでしょうか? 標準next()関数はこれをチェックしますか? そうでない場合は、テーブルを反復処理するときに常に使用し、直接呼び出さない方がよいのではないでしょうか? pairsnext()

0 投票する
3 に答える
66 参照

lua - print が表を表示する方法を変更するにはどうすればよいですか

次のようなコードがあるとします

aTable current aValue = 1Lua が ではなくのように出力するにはどうすればよいですtable: 0x01ab1d2

これまでのところ、メタメソッドを設定しようとしました__tostringが、それは によって呼び出されないようですprint。私が見逃しているメタメソッドはありますか、それとも答えはメタメソッドとは何の関係もありませんか?

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

lua - Lua 5.3 で短い呼び出しフォームがテーブルに対して機能しないのはなぜですか?

ルア 5.3

これは機能しません。なぜですか? テーブルに対して短い呼び出しフォームが機能しないのはなぜですか?

これは動作します...

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

c++ - Lua「nil値のインデックスを作成しようとしています」

ベクトル型を Lua に登録しようとしていますが、Lua から加算メタ関数を呼び出しているときに、「新しい値にインデックスを付けようとしています」という奇妙なエラーが発生します。

関連するコードセクションは次のとおりです。他のメタ関数は含めませんでした (同じ問題があります。唯一の違いは、最後の行の 1 つで使用されている数学演算子です)。エラーはstatic int LuaVector_lua___add(lua_State *L)関数から発生しているようです。

次のコードでクラッシュします。

原因を突き止めようとしましたが、実際に問題のある回線を特定できませんでした (ただし、それlua_gettableがエラー自体を引き起こしていると思います)。だから何でもいいのですが、私はそれを理解できないようです。

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

c++ - 関数呼び出しトラップ用の Lua メタテーブル

Lua Metatables を使用して、一部の内部 C++ 関数へのより適切なインターフェイスを作成しようとしています。

これまでのところ動作している私のコードは次のとおりです。(my.getおよびmy.setC++ で実装されています)

ここまでは順調です。次に作業を行いたいのは、次のようなテーブルでの関数呼び出しです。

私はこれが呼び出されることを知っていますmy.get("LABEL","Flash")— そして、( を使用して) C++ 関数を返すようにすることはできますが、C++ 関数が呼び出されると、 LABELおよびFlashパラメーターlua_pushcfunctionが欠落しています。

の C++ スニペットを次に示しmy.getます。