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_,iteminipairs(op2)dotable.insert(op1,item)endreturnop1end

--将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(...)