zoukankan      html  css  js  c++  java
  • Lua metatable & metamethod

    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时不会创建元表

      

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

      

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

      

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

  • 相关阅读:
    经典SQL语句大全
    SQL中With AS
    SQL Server 2008 r2 安装过程图解
    TFS2010中如何添加用户
    SQL中标准函数范例
    关闭子窗体时刷新父窗体
    sharepoint网站备份和还原
    LogHelper类
    TFS2010用户解锁
    ADHelper类
  • 原文地址:https://www.cnblogs.com/tekkaman/p/5649585.html
Copyright © 2011-2022 走看看