Lua metatable & metamethod

  Lua中的每个值都有一套预定义的操作集合,比如数字是可以相加的,字符串是可以连接的,但是对于两个table类型,则不能直接进行“+”操作。这需要我们进行一些操作。在Lua中有一个元表,也就是上面说的metatable,我们可以通过元表来修改一个值得行为,使其在面对一个非预定义的操作时执行一个指定的操作。比如,现在有两个table类型的变量a和b,我们可以通过metatable定义如何计算表达式a+b,具体的在Lua中是按照以下步骤进行的:

  1. 先判断a和b两者之一是否有元表;
  2. 检查该元表中是否有一个叫__add的字段;
  3. 如果找到了该字段,就调用该字段对应的值,这个值对应的是一个metamethod;
  4. 调用__add对应的metamethod计算a和b的值。

  Lua在创建新的table时不会创建元表

  Lua metatable & metamethod

  可以使用setmetatable去设置一个table或userdata类型变量的元表

  Lua metatable & metamethod

  在table中,我可以重新定义的元方法有以下几个:

  Lua metatable & metamethod

参考:http://www.jellythink.com/archives/511

相关文章:

  • 2021-07-01
  • 2022-01-12
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2021-12-13
  • 2021-08-18
  • 2022-12-23
  • 2021-06-13
相关资源
相似解决方案