私は Lua に小さな OOP ライブラリを実装しましたが、まだ 2 つの点が正しくありません。私はあなたのアドバイスを必要とします!
super() を呼び出すには?
私は選択をする必要があります。super() の呼び出しを解決するために必要な 3 つの引数は次のとおりです。
- 呼び出し元のクラス (CallerClass)
- 渡されるインスタンス (self)
- メソッドの名前 (メソッド)
私は次の 3 つの形式の間で迷っています。
--# 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で便利ですか?どう思いますか?ありがとう!