我刚刚回答了一个 Python 问题int
,该问题“需要”从(Python 中的不可变类型)继承一个类。我最近一直在做一些 Lua,当我回答这个问题时,我想;“这是如何在 Lua 中完成的?”
那么,我可以从 Lua 中的不可变类型继承一个类吗?如果是,如何?如果不能从整数等类继承,是否有其他方法可以实现类似于我对 Python 问题的回答中的行为?
作为旁注,我仍然很难理解 Lua 的元表。
我刚刚回答了一个 Python 问题int
,该问题“需要”从(Python 中的不可变类型)继承一个类。我最近一直在做一些 Lua,当我回答这个问题时,我想;“这是如何在 Lua 中完成的?”
那么,我可以从 Lua 中的不可变类型继承一个类吗?如果是,如何?如果不能从整数等类继承,是否有其他方法可以实现类似于我对 Python 问题的回答中的行为?
作为旁注,我仍然很难理解 Lua 的元表。
首先,Lua 没有面向对象的策略。来自 PiL2,第 15 章:
通常,Lua 不会设置策略。取而代之的是,Lua 提供了足够强大的机制,让开发人员群体能够实施最适合他们的策略。
Lua 中有许多面向对象编程的方法。
在 Lua 中,int
不是一个类。它甚至不是一个类型(Luadouble
默认使用 C 来表示数字)。
也就是说,可以使用 ametatable
来制作table
不可变的。因此,如果您使用table
s 来实现您的类(或原型),那么您当然可以从它们继承。您也可以将userdata
其用于您的类或原型,并且它的(im)可变性将由创建userdata
.
table
您可以在PiL 13.4.5中阅读有关 immutable的信息。你应该阅读第 13 章和第 16 章来了解 Lua 中的元表和 OOP。
如果您想要更多示例,LOOP包实现了几个 OOP 模型。