問題タブ [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 - Lua メタテーブルはインデックスを作成しようとしていますか?
だからここに私が書いたいくつかのコードがあります:
メタメソッドを使えばエラーにはならないと思っていたの__indexですが、それでもattempt to call field ?エラーが発生します。それでもエラーがスローされると推測しているので、使用してキャッチできる方法はありますかpcall()
mt次のようになります。
そして無効:
このエラーは、表に記載されていないオペランドをユーザーが入力した場合にのみスローされます ( input > #fileFunc) 。
lua - Lua __metatable バイパス?
__metatable メタメソッドをエスケープする方法があるかどうか疑問に思っていました。私は1つがないことを知っていますが、私はこのようなことをしようとしていますが、明らかに __metatable はそれが起こらないようにブロックします:
ここで私がやろうとしているのは、単に __metatable フィールドを通り過ぎてエスケープし、既に 1 つある _G にメタテーブルを設定できるようにすることです。これが不可能であることは承知していますが、まだバイパスする機会があるかどうかお尋ねしたいのですが?
lua - next() は __pairs メタメソッドを探しますか?
一般に、構文は次のとおりです。
次と同等です。
しかし、メタメソッドがある場合tはどうなる__pairsでしょうか? 標準next()関数はこれをチェックしますか? そうでない場合は、テーブルを反復処理するときに常に使用し、直接呼び出さない方がよいのではないでしょうか? pairsnext()
lua - print が表を表示する方法を変更するにはどうすればよいですか
次のようなコードがあるとします
aTable current aValue = 1Lua が ではなくのように出力するにはどうすればよいですtable: 0x01ab1d2か
これまでのところ、メタメソッドを設定しようとしました__tostringが、それは によって呼び出されないようですprint。私が見逃しているメタメソッドはありますか、それとも答えはメタメソッドとは何の関係もありませんか?
lua - Lua 5.3 で短い呼び出しフォームがテーブルに対して機能しないのはなぜですか?
ルア 5.3
これは機能しません。なぜですか? テーブルに対して短い呼び出しフォームが機能しないのはなぜですか?
これは動作します...
c++ - Lua「nil値のインデックスを作成しようとしています」
ベクトル型を Lua に登録しようとしていますが、Lua から加算メタ関数を呼び出しているときに、「新しい値にインデックスを付けようとしています」という奇妙なエラーが発生します。
関連するコードセクションは次のとおりです。他のメタ関数は含めませんでした (同じ問題があります。唯一の違いは、最後の行の 1 つで使用されている数学演算子です)。エラーはstatic int LuaVector_lua___add(lua_State *L)関数から発生しているようです。
次のコードでクラッシュします。
原因を突き止めようとしましたが、実際に問題のある回線を特定できませんでした (ただし、それlua_gettableがエラー自体を引き起こしていると思います)。だから何でもいいのですが、私はそれを理解できないようです。
c++ - 関数呼び出しトラップ用の Lua メタテーブル
Lua Metatables を使用して、一部の内部 C++ 関数へのより適切なインターフェイスを作成しようとしています。
これまでのところ動作している私のコードは次のとおりです。(my.getおよびmy.setC++ で実装されています)
ここまでは順調です。次に作業を行いたいのは、次のようなテーブルでの関数呼び出しです。
私はこれが呼び出されることを知っていますmy.get("LABEL","Flash")— そして、( を使用して) C++ 関数を返すようにすることはできますが、C++ 関数が呼び出されると、 LABELおよびFlashパラメーターlua_pushcfunctionが欠落しています。
の C++ スニペットを次に示しmy.getます。