Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua中OOP库的设计问题_Oop_Lua - Fatal编程技术网

Lua中OOP库的设计问题

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

我在Lua中实现了一个小的OOP库,但有两件事还不太正确。我需要你的建议

如何调用super()? 我需要做出选择。解析对super()的调用需要三个参数:

  • 从中进行调用的类(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上,请参阅