問題タブ [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 - 複数のサブテーブルでテーブルアクセスを追跡していますか?
これは、次のようにテーブル アクセスを追跡するためにプロキシ テーブルを使用できるという考えに基づいています: http://www.lua.org/pil/13.4.4.html
しかし、データ構造が 1 次元のテーブルではなく、次のようなものだったとしたらどうでしょう。
これはまったく可能ですか?
lua - タブ内にメタテーブルをアタッチする
構成ファイルを解析してテーブルを生成するパーサーがあります。
結果のテーブルは次のようになります。
目標は、設定を読み取ることができるテーブルを用意することです。設定が存在しない場合は、親から取得しようとします。最上位では、グローバルから取得します。グローバルにない場合は nil を返します。
次のようにメタテーブルをルートにアタッチします。
ただし、キーを要求するときは機能しません。事実のように見えるのは、それが常に nil であるということです。親テーブルから読み取るにはどうすればよいですか?
lua - lua テーブル、__tostring をオーバーロードする最も簡単な方法
印刷テーブルをカスタマイズする方法について議論してくれたすべての Lua stackoverflow 関係者に感謝します。多くの読書の後、私は以下を投稿し、ルアの達人に尋ねます....
- これは最も簡単な方法ですか?
- 単純すぎますか (つまり、理解できない方法で壊れています)?
次の点に注意してください。
- 印刷されないプライベートフィールド (名前を「_」で始めるだけ) を許可します
metatableすべてのオブジェクトの にサイズを追加するわけではありません。
tostring私のアプローチは、デフォルトのメソッドを書き直します。
上記は少し悪いです (pcall への呼び出し... 私の自慢のコードではありませんが、動作します)。
いずれにせよ、次の自作オブジェクトシステムを使用して定義できるオブジェクトへtostringのメソッド呼び出しを行います。t:s()
:s()サブクラスでカスタマイズできる --のデフォルト定義は次のとおりです。
例えば
class - Lua、クラステーブルとインスタンス化をどのように行うのですか?
質問はhttp://tylerneylon.com/a/learn-lua/から作成されまし た。チュートリアルにはコードが含まれています。
これは、チュートリアルの上記のコードの結果です。
チュートリアルの実装では 'I saywoof' が正常に出力されますが、myDog のメタテーブルは明らかに期待したほど望ましくありません。したがって、私の解決策は以下のとおりです (違いは Dog.new にあります)。
私の解決策の結果:
私のコードは「I saywoof」を出力し、より正確なテーブル構造を持っています。チュートリアルの実装と私の実装のどちらが正しいか知りたいですか? さらに、チュートリアルのコードが Dog のメタテーブルの反復定義を生成する理由を知りたいです。