問題タブ [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()
関数はこれをチェックしますか? そうでない場合は、テーブルを反復処理するときに常に使用し、直接呼び出さない方がよいのではないでしょうか? pairs
next()
lua - print が表を表示する方法を変更するにはどうすればよいですか
次のようなコードがあるとします
aTable current aValue = 1
Lua が ではなくのように出力するにはどうすればよいです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.set
C++ で実装されています)
ここまでは順調です。次に作業を行いたいのは、次のようなテーブルでの関数呼び出しです。
私はこれが呼び出されることを知っていますmy.get("LABEL","Flash")
— そして、( を使用して) C++ 関数を返すようにすることはできますが、C++ 関数が呼び出されると、 LABELおよびFlashパラメーターlua_pushcfunction
が欠落しています。
の C++ スニペットを次に示しmy.get
ます。