您的位置:首页 > 编程语言 > Lua

Metatable 对象默认的操作方式

2016-06-14 23:00 274 查看
lua基础:http://www.jb51.net/article/55394.htm

metatable学习:http://mobile.51cto.com/iphone-285892.htm   

--定义2个表
a = {5, 6}  
b = {7, 8} 

--用c来做Metatable
c = {} 

--重定义加法操作
c.__add = function(op1, op2)  
   for _, item in ipairs(op2) do  
      table.insert(op1, item)  
   end  
   return op1  
end 

--将a的Metatable设置为c
setmetatable(a, c) 

--d现在的样子是{5,6,7,8}
d = a + b 

至于__add这是MetaMethod,这是Lua内建约定的,其它的还有如下的MetaMethod:

__add(a, b)                     对应表达式 a + b

__sub(a, b)                     对应表达式 a - b

__mul(a, b)                     对应表达式 a * b

__div(a, b)                     对应表达式 a / b

__mod(a, b)                     对应表达式 a % b

__pow(a, b)                     对应表达式 a ^ b

__unm(a)                        对应表达式 -a

__concat(a, b)                  对应表达式 a .. b

__len(a)                        对应表达式 #a

__eq(a, b)                      对应表达式 a == b

__lt(a, b)                      对应表达式 a < b

__le(a, b)                      对应表达式 a <= b

__index(a, b)                   对应表达式 a.b

__newindex(a, b, c)             对应表达式 a.b = c

__call(a, ...)                  对应表达式 a(...)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua Metatable