标签:turn nbsp meta class lua == 模型 return bsp
在c++中可以重载操作符,在lua中也有,不过lua是通过元方法实现的,异曲同工,都是一样的
比如c++,重载了+之后,具体做什么都是自己实现,lua也一样
定义操作符行为的元方法有:
| __add | 对应的运算符 ‘+‘. 可以定义已定义操作符的表和其他表相加的行为,以及操作的值(返回值)(下同) | 
| __sub | 对应的运算符 ‘-‘. | 
| __mul | 对应的运算符 ‘*‘. | 
| __div | 对应的运算符 ‘/‘. | 
| __mod | 对应的运算符 ‘%‘. | 
| __unm | 对应的运算符 ‘-‘. 可以定义已定义操作符的表,在负的时候的行为,以及操作的值(返回值) | 
| __concat | 对应的运算符 ‘..‘. | 
| __eq | 对应的运算符 ‘==‘. | 
| __lt | 对应的运算符 ‘<‘. | 
| __le | 对应的运算符 ‘<=‘. | 
例:
1.二元操作符
 t = setmetatable({1},{__add = 
       function(mytable, newtable) 
            --body
--这里定义__add元方法通过+号遇到另一个table时的行为
--return table
end})
这个模型适用于二元操作符,上面是定义了两表相加的具体操作,最后必须放回一个表,表示相加的值,所有的二元操作符都可以使用这个模型
2.一元操作符
负号是一元操作符
t = setmetatable({1},{__unm = 
  function(mytable) 
    --body
--这里定义表遇到负号时的行为以及他的值
--return table
end})
标签:turn nbsp meta class lua == 模型 return bsp
原文地址:http://www.cnblogs.com/xzxdm/p/7523748.html