我只是answered a Python question“需要”从int
继承一个类(Python中的不可变类型)。
我最近一直在做一些Lua,当我回答这个问题时,我想; “Lua怎么办?”
那么,我可以从Lua中的不可变类型继承一个类吗?如果有,怎么样? 如果无法从诸如整数的类继承,是否还有其他方法来实现类似于我在Python问题上的答案中的行为?
作为旁注,我在理解Lua的元词方面仍然遇到很多麻烦。
答案 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模型。