前言元表对应的英文是metatable,元方法是metamethod。我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算。在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了。那本文...
分类:
其他好文 时间:
2014-08-20 20:51:33
阅读次数:
460
元表概念:引言:Lua中的每个值都有一套预定义的操作集合,如数字相加等。但无法将两个table相加,此时可通过元表修改一个值的行为,使其在面对一个非预定义的操作时执行一个指定操作。访问机制:一般的元方法都只针对Lua的核心,也就是一个虚拟机。它会检测一个操作中的值是否有元表,这些元表是否定义了关于次...
分类:
其他好文 时间:
2014-07-26 14:48:31
阅读次数:
176
前言元表对应的英文是metatable,元方法是metamethod。我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算。在Lua中也有这个道理,两个table类型的变量,你是无法直接进行“+”操作的,如果你定义了一个指定的函数,就可以进行了。那这篇...
分类:
其他好文 时间:
2014-07-24 12:22:05
阅读次数:
320
根据Metatable的用法,我倾向于将Metatable翻译成关联表,Metamethod翻译成关联函数。通过给两个table设置同一个Metatable可以使两个table产生联系,将两个table关联起来,然后对两个table进行一些操作,具体的操作行为由Metamethod来定义。下面是一个...
分类:
其他好文 时间:
2014-07-11 10:56:41
阅读次数:
185
Lua中提供的元表是用于帮助Lua数据变量完成某些非预定义功能的个性化行为,如两个table的相加。假设a和b都是table,通过元表可以定义如何计算表达式a+b。当Lua试图将两个table相加时,它会先检查两者之一是否有元表,然后检查该元表中是否存在__add字段,如果有,就调用该字段对应的值....
分类:
其他好文 时间:
2014-06-24 10:21:33
阅读次数:
309