美文网首页
元表的理解

元表的理解

作者: 我家菇凉 | 来源:发表于2021-05-31 14:25 被阅读0次

    元表本质上来说是一种用来存放元方法的table。我们可以通过对应的key来得到value值,作用就是修改一个值的行为(更确切的说,这是元方法的能力),需要注意的是,这种修改会覆盖掉原本该值可能存在的相应的预定义行为。

    1. lua中的每个值都可以有一个元表,只是table和userdata可以有各自独立的元表,而其他类型的值则共享其类型所属的单一元表。

       lua代码中只能设置table的元表,至于其他类型值的元表只能通过C代码设置。

       多个table可以共享一个通用的元表,但是每个table只能拥有一个元表。 

    我们称元表中的键为事件(event),称值为元方法(metamethod)。前述例子中的事件是"add",元方法是执行加法的函数。

    可通过函数getmetatable查询任何值的元表。

    可通过函数setmetatable替换表的元表

    lua查找表中的元素时规则如下:

     1.在表中查找,如果找到,返回该元素,找不到则继续

      2.判断该表是否有元表,如果没有元表,返回nil,有元表则继续

      3.判断元表有没有__index方法,如果__index方法为nil,则返回nil;如果__index方法是一个表,则重复1、2、3;如果__index方法是一个函数,则返回该函数的返回值


    相关文章

      网友评论

          本文标题:元表的理解

          本文链接:https://www.haomeiwen.com/subject/msbwsltx.html