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

  • 相关阅读:
    随机图片
    单页网站
    最安全的聊天工具——Cryptocat
    一个游戏——小黑屋
    SAO Utils – SAO风格启动菜单
    对话框实现
    抖动文字
    Leetcode: 22. Generate Parentheses
    Leetcode: 21. Merge Two Sorted Lists
    Leetcode: 20. Valid Parentheses
  • 原文地址:https://www.cnblogs.com/tekkaman/p/5649585.html
Copyright © 2011-2022 走看看