繁体   English   中英

Lua表和类之间有什么区别?

[英]What is the difference between Lua tables and classes?

我是一般编程的初学者,我一直在尝试几种不同的语言。 在Lua中,有些表看起来像超级列表(数组,字典,列表全部在一个列表中),但是在Lua中,可以这样做:

player = { health = 100, attack = 50, mana = 54 }
print(player.health)

它将返回100。但是在其他编程语言中,您需要创建一个类才能获得相同的输出。 但是据我了解,Lua既有类又有表? 但是表的行为似乎非常相似,所以它们相同吗? 如果不是,是什么使它们与众不同,以及使用它们两者的优缺点?

但是据我了解,Lua既有类又有表?

不,不是的。

Lua(忽略C API的东西)只有一种复杂的数据结构:表。

您可以使用表格创建一个类。 您可以使用表创建各种事物。 Lua表非常灵活,正是因为它们是Lua 唯一的数据结构。

在Lua中,基本层次上的每个复杂事物都是一个表。 或者,如果来自C API,则为userdata。

类基本上是用于创建对象的原型。 您声明一个类中包含X,Y和Z成员,然后创建该类类型的对象,其中将包含X,Y和Z成员。

您可以创建模仿类行为的Lua表。 但是Lua中没有形式上像类的语言构造。

Lua没有类,只有表,并且带有metatable。 Lua使用原型实现OOP

我认为您很困惑,因为object.attribute通常是其他语言中访问对象属性的方式。

无论如何,由于Lua没有类,所以可以使用点来访问表的字段,而table.field工作方式与编写table["field"]完全相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM