什么是元表?
本课属于 Coddy Lua 学习旅程的“逻辑与流程”单元。第 16 课,共 54 课。
元表其实就是一个普通的 Lua 表,但它有特殊用途。将元表附加到另一个表(我们称它为“主”表)后,你可以改变对主表执行某些操作时它的行为。
可以这样理解:通常,如果你尝试使用 + 运算符将两个表相加,Lua 不知道该怎么做,因此会报错。但有了元表,你就可以定义表相加的含义。你可以让它把对应的值相加、拼接表中的内容,或者执行任何适合你程序的操作。
元表通过定义称为元方法的特殊函数来发挥作用。这些元方法有特定的名称,以两个下划线开头,例如用于加法的 __add,或用于查找缺失键的 __index。当 Lua 对一个带有元表的表执行操作时,它会检查元表是否有对应的元方法,并使用该方法来决定接下来发生什么。
这个概念让你可以实现许多功能,例如创建具有自定义行为的数据类型、实现面向对象模式、防止表被意外修改等。在接下来的课中,你将学习如何为表添加元表,并使用元方法自定义表的行为。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Lua 在线编译器