Вопросы дизайна для библиотеки ООП в Lua - PullRequest
1 голос
/ 22 октября 2008

Я реализовал небольшую библиотеку ООП в Lua, и две вещи пока не совсем верны. Мне нужен твой совет!

Как позвонить в super ()?

Мне нужно сделать выбор. Три аргумента, которые мне нужны для разрешения вызова super ():

  • Класс, из которого выполняется вызов (CallerClass)
  • Экземпляр, который нужно передать (самостоятельно)
  • Название метода (метода)

Я колеблюсь между этими тремя формами:

--# 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? Как вы думаете? Спасибо!

Ответы [ 3 ]

1 голос
/ 22 октября 2008

Я бы сказал, есть объект класса - больше информации / метаданных лучше

1 голос
/ 22 октября 2008
--# Python style, which is nice too:
super(CallerClass, self):method()
0 голосов
/ 23 октября 2008

Спасибо, Крис, готово.

Для тех, кто заинтересован, код опубликован в вики Lua Users, см. ObjectLua .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...