从不可变类型继承?

时间:2013-05-10 21:34:18

标签: inheritance lua metatable

我只是answered a Python question“需要”从int继承一个类(Python中的不可变类型)。 我最近一直在做一些Lua,当我回答这个问题时,我想; “Lua怎么办?”

那么,我可以从Lua中的不可变类型继承一个类吗?如果有,怎么样? 如果无法从诸如整数的类继承,是否还有其他方法来实现类似于我在Python问题上的答案中的行为?

作为旁注,我在理解Lua的元词方面仍然遇到很多麻烦。

1 个答案:

答案 0 :(得分:1)

首先,Lua没有面向对象的策略。来自PiL2,第15章:

  

通常,Lua不设置策略。相反,Lua提供了机制      这些功能足以让开发人员实施    最适合他们的政策。

Lua中有很多面向对象编程的方法。

在Lua中,int不是一个类。它甚至不是一种类型(Lua默认使用C double来表示数字。)

也就是说,可以使用metatable使table不可变。因此,如果您使用table来实现您的类(或原型),那么您当然可以从它们继承。您还可以将userdata用于您的类或原型,并且其(im)可变性将由创建userdata的C库建立。

您可以在PiL 13.4.5中阅读有关不可变table的信息。您应该阅读第13章和第16章,了解Lua中的元数据和OOP。

如果您想要更多示例,LOOP包实现了几个OOP模型。