从不可变类型继承?

我刚刚回答了一个Python问题,其中“需要”从int(Python中的不可变类型)继承一个类。我最近一直在做Lua,当我回答这个问题时,我想:“Lua中如何实现这个?”

那么,我能否从一个不可变类型中继承一个类?如果可以,如何?

如果无法从整数等类中继承,是否有其他方式实现类似于我在Python问题中回答的行为?

另外,我仍然很难理解Lua的元表。

点赞
用户33252
用户33252

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

通常,Lua不设置策略。相反,Lua提供了强大的机制,供开发者组实现其最适合自己的策略。

在Lua中,int不是一个类。它甚至不是一种类型(默认情况下,Lua使用Cdouble表示数字)。

尽管如此,可以使用 metatable 来使table 不可变。因此,如果正在使用 table 来实现您的类(或原型),则可以从中继承。您还可以使用 userdata 作为您的类或原型,其(不)可变性将由创建 userdata 的 C库确定。

您可以在 PiL 13.4.5中了解不可变 table 。您应该阅读第13章和第16章以了解Lua中的元表和OOP。

如果您需要更多的例子,则 LOOP 包实现了几个OOP模型。

2013-05-10 22:09:49