ppppl 2010-03-17
lua真是很灵活,可以模拟很多其他语言的高级特性,今天学习了算术类的元方法这一块,在此记录。
everythingistableinlua
我觉得对table的运算术计算叫成运算符重载更合适
lua里有这几种运算可以重载
__add-->+
__mul-->*
__sub-->-
__div-->%
__unm-->负数
__pow-->幂
步骤是这样的
Set={}--普通表
localmt={}--元表
--建元表
functionSet.new(t)
localset={}
setmetatable(set,mt)
for_,linipairs(t)doset[l]=trueend
returnset
end
--重载方法
functionSet.union(a,b)
...
end
--从元表建新表
s1=Set.new{10,20,30,50}
s2=Set.new{30,1}
--给元表重定向运算符
mt.__add=Set.union
--执行计算
s3=s1+s2
这样即可对两个表执行并集运算了,可以自己打印结果看看
#end