Metatable 对象默认的操作方式
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(...)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。