2

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

那么,我可以从 Lua 中的不可变类型继承一个类吗?如果是,如何?如果不能从整数等类继承,是否有其他方法可以实现类似于我对 Python 问题的回答中的行为?

作为旁注,我仍然很难理解 Lua 的元表。

4

1 回答 1

1

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

通常,Lua 不会设置策略。取而代之的是,Lua 提供了足够强大的机制,让开发人员群体能够实施最适合他们的策略。

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

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

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

table您可以在PiL 13.4.5中阅读有关 immutable的信息。你应该阅读第 13 章和第 16 章来了解 Lua 中的元表和 OOP。

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

于 2013-05-10T22:09:49.680 回答