質問
Luaに小さなOOPライブラリを実装しましたが、2つのことがまだ正しくありません。あなたのアドバイスが必要です!
super()の呼び出し方法
選択をする必要があります。 super()の呼び出しを解決するために必要な3つの引数は次のとおりです。
- 呼び出し元のクラス(CallerClass)
- 渡されるインスタンス(自己)
- メソッドの名前(メソッド)
これら3つの形式の間にはbetweenします:
--# Current way:
self:super(CallerClass):method()
--# Variant, which I now find cleaner:
CallerClass:super(self):method()
--# Python style, which is nice too:
super(CallerClass, self):method()
自分にとって覚えやすいと思う、または覚えやすいものはどれですか
クラスシンボルは必要ですか?
現在のバージョンでは、唯一のコンセプトは Object
という名前のテーブルで、サブクラス化できます。クラスシンボルを導入した別のバージョンがあります。
その使用法は、クラスからインスタンスを伝えることです。つまり:
assert(Object:isKindOf(Class))
local object = Object:new()
assert(not object:isKindOf(Class))
メソッドを開始するには、クラスからメソッドを呼び出す必要があることを文書化して実施するのが非常に便利です。
assert(self:isKindOf(Class))
Luaで便利ですか?どう思いますか?ありがとう!
解決
--# Python style, which is nice too:
super(CallerClass, self):method()
他のヒント
クラスオブジェクトがあると言います-詳細情報/メタデータの方が優れています
クリス、ありがとう。
LuaユーザーWikiにコードが公開されています。 ObjectLua をご覧ください。
所属していません StackOverflow