問題タブ [meta-method]

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 投票する
0 に答える
326 参照

lua - すべてのメタ可能なコンテンツを印刷する

私はテーブルを持っています:

そして、私は汚いが機能するコードを持っています:

その電報ボット。名前、日付、時間で農場について尋ねられると、それは問題ありません。

私の問題はelseステートメントの近くにあります。bot に農場と日付について質問したい。「At 16-6-2014, at farm "knk" will be 2 farms. At 17 - 2 agent. At 18 - 3 agent」のようなリストを返す必要があります。

シンプルな table.concat はうまくいきませんでした。

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

c++ - C++ からの Lua 関数の呼び出し

LuaJit の最新バージョンを使用していますが、使用を開始する際にサポートが必要です。私が必要としているのは、ユーザーが提供したコードを実行するためにスクリプト内でオーバーライドできる Lua 環境に公開された一連の関数を用意することです。これらの関数は、C++ 内からセット イベント中に呼び出されます。

たとえば、ユーザーが TAB キーを押すと、OnScoreboardOpen() などの lua 環境から関数が呼び出され、ユーザーが TAB キーを離すと、対応する関数 OnScoreboardClose() が呼び出されます。これらの関数はメタメソッドにアタッチできます。ゲームやGMのように。

これを実現する方法を示すチュートリアルやサンプル コードを教えてもらえますか? どうぞよろしくお願いいたします。

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

syntax - Lua テーブル自体の戻り値をオーバーライドできますか?

テーブルがキーなしで参照された場合、それ自体への参照ではなく特定の値を返すことは可能ですか?

次のテーブルがあるとします。

Lua では、"person.name"、"person.level"、または "person.age" を簡単に参照して、期待どおりの値を取得できます。ただし、「person」のみを参照したい場合があり、「table:」を取得する代わりに「person.name」の値を返したい場合があります。

つまり、person.x (または person[x]) がテーブルから適切なエントリを返すようにしたいのですが、キーのない person は person.name (または person["name"]) の値を返します。私が見つけることができなかったメカニズムはありますか?

__index はキーが存在しない場合にのみ適用されるため、メタテーブルでは成功しませんでした。「人」を別のテーブルに入れると、次のようになります。

これにより、__index を使用して特別な処理を行うことができますが、__index() からは、env.person (true_person.name を返したい場所) の要求を受け取っているかどうかを判断する方法がありません。 env.person[key] (「キー」に適切にアクセスできるように、true_person をテーブルとして返したい)。

何かご意見は?これには別の方法でアプローチできますが、これらの線に沿ってアプローチできることを願っています。

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

lua - これにより C スタック オーバーフローが発生するのはなぜですか?

を使用してこの問題を解決できることは承知していrawsetますが、次のコードで C スタック オーバーフローが発生する理由が気になります。

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

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")

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

lua - Lua でテーブルを別のテーブルにポイントする

テーブルを別のテーブルにポイントする方法はありますか? 例えば:

あなたが私の主張を理解してくれることを願っています..ありがとう

編集:

さて、ここにアイデアがあります:

このような動的関数を作成しています

すべてうまくいき、値は機能し、私たちは皆幸せです..参照テーブルがこのように値を変更すると問題が発生します

インデックスで更新していないため (つまり、テーブル [1] = 9999) 参照変数は実際の変数と「同期されていません」。理解していただければ幸いです :)

EDIT2:

さて、ここに私の主な問題の自己動作例があります

変数が更新されたときにテーブルを直接指すことができないのはなぜですか? 更新するテーブルが20あるので、これを行う方が簡単です

http://www.compileonline.com/execute_lua_online.phpで実行して、私の言いたいことを確認してください。

ぐちゃぐちゃで申し訳ありませんが、私の英語は最高ではありません:D

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

lua - setmetatable() はどのように機能し、lua のリンク リストでメタテーブルが必要な理由

Lua のメタテーブルが OOP でどのように機能するかを学んでいますが、lua-users wiki のオブジェクト指向チュートリアルから読んだコードについて混乱しています。誰かが次の質問を説明するのを手伝ってくれませんか? ありがとう。

質問 1: ウィキの説明: ここでは、値が関数のように呼び出されるとトリガーされる __call メタメソッドを持つクラス テーブルにメタテーブルを追加します。クラスのコンストラクターを呼び出すようにするため、インスタンスを作成するときに .new は必要ありません。

(1)コンストラクターが呼び出されるように、例で __call はどのように呼び出されますか?
(2)「cls」は「MyClass」のことですか?

質問 2: 次のコードの {} は何を参照していますか?

**完全なコードは次のとおりです。

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

lua - Lua __metatable バイパス?

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

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