我在Lua中实现了一个小的OOP库,还有两件事情还不对。我需要你的建议!
我需要做出选择。我需要解决对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中有用吗?你怎么看?谢谢!
答案 0 :(得分:1)
--# Python style, which is nice too:
super(CallerClass, self):method()
答案 1 :(得分:1)
我想说有一个类对象 - 更多信息/元数据更好
答案 2 :(得分:0)
谢谢克里斯,完成了。
对于有兴趣的人,代码发布在Lua Users Wiki上,请参阅ObjectLua。