您当前的位置: 首页 > 
  • 1浏览

    0关注

    322博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Lua元表和元方法(Metatables and Metamethods)

森明帮大于黑虎帮 发布时间:2022-08-13 13:15:38 ,浏览量:1

Lua 中的 table 由于定义的行为,我们可以对 key-value 对执行加操作,访问 key 对应的 value,遍历所有的 key-value。但是我们不可以对两个 table 执行加操作,也不可以比较两个表的大小。

Metatables 允许我们改变 table 的行为,例如,使用 Metatables 我们可以定义 Lua 如何计算两个 table 的相加操作 a+b。当 Lua 试图对两个表进行相加时,他会检查两个表是否有一个表有 Metatable,并且检查 Metatable 是否有__add 域。如果找到则调用这个__add函数(所谓的 Metamethod)去计算结果。

Lua 中的每一个表都有其 Metatable。(后面我们将看到 userdata 也有 Metatable), Lua默认创建一个不带 metatable 的新表。 在这里插入图片描述 可以使用 setmetatable 函数设置或者改变一个表的 metatable在这里插入图片描述 在这里插入图片描述

任何一个表都可以是其他一个表的 metatable,一组相关的表可以共享一个 metatable(描述他们共同的行为)。一个表也可以是自身的 metatable(描述其私有行为)。

关注
打赏
1664288938
查看更多评论
立即登录/注册

微信扫码登录

0.0969s