Luaのオブジェクト指向の二つの方法

要素法とテーブル要素と1

Luaのオブジェクト指向プログラミングが基づいているメタテーブル、メタ員テーブル__index方法実施
テーブル要素__index要素法により、テーブルを別のテーブルに__indexエレメントの方法が提供され、その後、後者の方法は前者継承し

あなたはLuaのテーブル要素が存在しない、それは、ルックアップ機構LUAをトリガーする訪問すれば、オブジェクト指向実装できるようにするには、このメカニズムのおかげである
元のサマリー表を発見するステップを:
ステップ1ルックテーブルで、見つかった場合、要素が返され、2ステップに進んで見出されない
戻り3次に、nilをステップメタテーブルに進み、ステップ2は全く表要素が存在しない場合、テーブルは、テーブル要素を有しているか否かを判断する
、ステップ3の分析方法がテーブル員__index __index方法がnilである場合、ゼロが返され、__indexがテーブルである場合、反復手順2、3; __index方法が関数である場合、関数が呼び出され、関数の戻り値を返しています

  • その後、AがBで何かを見つけるための試みで発見されていない予備のテーブルのルックアップテーブル、テーブルAテーブルのような要素は、要素がBであると仮定し、テーブル要素はの機能として提供されています
  •  (A、B)setmetatableのでAは変数Bを見つけることがない場合、それらは、表B元素表Aに設定されていることで発見されます
  • __Index要素法は、テーブルルックアップ方式を決定するために使用される、ときにテーブル要素
  • オブジェクト指向パッケージ

-メタテーブルの新たなターゲット設定
setmetatable(tempObj、クラス)

  • オブジェクトの継承とポリモーフィズムのために

親クラス: -メタテーブル__indexを設定するための要素法、そのポイントテーブルクラス
クラスクラス.__ =インデックス
-新しいオブジェクトがメタテーブル、提供
setmetatable(tempObj、クラス)
のサブクラスを: -要素を設定し、テーブルクラス
setmetatable(サブクラスクラス)
-メタテーブル__indexを設定する要素法、それらのポイントテーブルサブクラス
サブクラス.__インデックス=サブクラス

2、直接基底クラスのサブクラスディープコピーのメンバーに

:外国の唯一のクラスの機能、パラメータは、基底クラスの名前です派生クラスのオブジェクトのデータを返します。関数の戻りは、対応するメタデータテーブルを取得するには、ベースクラスに渡されている初期化され員の派生オブジェクトのテーブル、そのコードが実行されていることを、オブジェクトを行うために作成されたときに、より消費することになるというダイナミックな欠陥をルックアップする必要はありません。時間。

 

 

おすすめ

転載: www.cnblogs.com/wwhhgg/p/12606677.html