Frage

Ich implementierte eine kleine OOP Bibliothek in Lua, und zwei Dinge sind nicht ganz richtig vor. Ich brauche Ihren Rat!

Wie Super () aufrufen?

Ich brauche eine Wahl zu treffen. Die drei Argumente, die ich brauche einen Aufruf von super zu lösen () ist:

  • Die Klasse, von wo aus der Anruf getätigt wird (CallerClass)
  • Die Instanz übergeben (Selbst-)
  • werden
  • Der Name der Methode (Methode)

Ich zögere zwischen diesen drei Formen:

--# 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()

Welches sieht schöner und einfacher und Sie zu erinnern?

Bekomme ich eine Klasse Symbol brauchen?

In der aktuellen Version ist das einzige Konzept ist eine Tabelle mit dem Namen Object, die Sie Unterklasse können. Ich habe eine andere Version, wo ich ein Klassensymbol eingeführt.

Seine Verwendung ist Instanzen von Klassen zu erzählen. D. h :

assert(Object:isKindOf(Class))
local object = Object:new()
assert(not object:isKindOf(Class))

Ich finde es sehr praktisch, zu dokumentieren und erzwingen, dass eine Methode aus einer Klasse aufgerufen werden muss, indem das Verfahren, beginnend mit:

assert(self:isKindOf(Class))

Ist es in Lua usefull? Was denkst du? Vielen Dank!

War es hilfreich?

Lösung

--# Python style, which is nice too:
super(CallerClass, self):method()

Andere Tipps

Ich würde sagen, eine Klasse Objekt - weitere Informationen / Metadaten besser

Danke Chris, fertig.

Für Interessenten wird der Code auf dem Wiki Lua Benutzer veröffentlicht finden Sie unter ObjectLua .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top