Я реализовал небольшую библиотеку ООП в 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? Как вы думаете? Спасибо!