Lua 表和 类 有什么区别?

What is the difference between Lua tables and classes?

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

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

并且它会 return 100。但是在其他编程语言中,您需要进行 class 才能获得相同的输出。但据我了解,Lua 有 classes 和表格?但是表看起来非常相似,那么它们是一样的吗?如果不是,是什么让它们不同,使用它们的优缺点是什么?

But from my understanding, Lua has classes as well as tables?

不,不是。

Lua(忽略 C API 的东西)只有一个复杂的数据结构:tables.

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

在Lua中,每一个复杂的事物在它的基础层都是一个table。或者如果它来自 C API,userdata.

A class 基本上是创建对象的原型。您声明一个 class 中有 X、Y 和 Z 成员,然后您创建一个 class 类型的对象,其中将有 X、Y 和 Z 成员。

您可以创建模仿 classes 行为的 Lua tables。但是 Lua 中没有形式上类似于 class.

的语言结构

Lua 没有 类,只有表,有元表。 Lua 使用原型实现 OOP

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

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