Lua中OOP库的设计问题
我在Lua中实现了一个小的OOP库,但有两件事还不太正确。我需要你的建议 如何调用super()? 我需要做出选择。解析对super()的调用需要三个参数:Lua中OOP库的设计问题,oop,lua,Oop,Lua,我在Lua中实现了一个小的OOP库,但有两件事还不太正确。我需要你的建议 如何调用super()? 我需要做出选择。解析对super()的调用需要三个参数: 从中进行调用的类(CallerClass) 要传递的实例(self) 方法的名称(方法) 我在这三种形式之间犹豫不决: --# Current way: self:super(CallerClass):method() --# Variant, which I now find cleaner: CallerClass:super(s
- 从中进行调用的类(CallerClass)
- 要传递的实例(self)
- 方法的名称(方法)
--# 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中有用吗?你怎么认为?谢谢 我想说拥有一个类对象-更多的信息/元数据更好谢谢Chris,完成了
--# Python style, which is nice too:
super(CallerClass, self):method()
对于感兴趣的人,代码发布在Lua用户Wiki上,请参阅