lua的运算符重载

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

相关推荐