2

私は 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で便利ですか?どう思いますか?ありがとう!

4

3 に答える 3

1
--# Python style, which is nice too:
super(CallerClass, self):method()
于 2008-10-22T06:36:46.553 に答える
1

クラスオブジェクトがあると思います-詳細情報/メタデータの方が優れています

于 2008-10-22T06:37:27.207 に答える
0

クリス、ありがとう。

興味のある方は、コードが Lua Users Wiki で公開されています。 ObjectLuaを参照してください。

于 2008-10-23T09:46:46.437 に答える