Я реализовал небольшую библиотеку ООП в Lua, и две вещи пока не совсем правильные. Мне нужен твой совет!
Мне нужно сделать выбор. Для разрешения вызова super () мне нужны три аргумента:
Я колеблюсь между этими тремя формами:
--# 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? Что вы думаете? Спасибо!


--# Python style, which is nice too:
super(CallerClass, self):method()
Я бы сказал, что у вас есть объект класса - больше информации / метаданных лучше
Спасибо, Крис, готово.
Для заинтересованных, код опубликован в Lua Users Wiki, см. ObjectLua.