时间:2021-05-22
counter = { count = 0}function counter.get(self) return self.countendfunction counter:inc() self.count=self.count+1endprint(counter.get(counter))counter.inc(counter)print(counter.get(counter))counter2={ count=4, get = counter.get, inc = counter.inc,}print(counter2:get())counter.inc(counter2)print(counter2.get(counter2))print()tb1 ={ "alpha","beta","gamma"}mt={}setmetatable(tb1,mt)print(getmetatable(tb1) == mt)print()function mt.__add(a,b) local result = setmetatable({},mt) for i=1,#a do table.insert(result,a[i]) end for i=1,#b do table.insert(result,b[i]) end return resultendtb2={"aaa","bbb","ccc"}res=tb1+tb2for i,v in ipairs(res) do print(v)endprint()function mt.__unm(a) local result = setmetatable({},mt) for i=#a , 1 ,-1 do table.insert(result,a[i]) end return resultendres=-tb1+tb2for i,v in ipairs(res) do print(v)endprint()function mt.__tostring(a) local result = "{" for i,v in ipairs(a) do result = result.." "..v end result = result.." } " return resultendprint(tb1)function mt.__index(tb1,key) print("there is no "..key.." in the table") return nilendprint(tb1["fsy"])function mt.__newindex(a,key,v) if( key == "haha") then error(" Stop laugh!",2) else rawset(a,key,v) endendtb1.haha="heihei"
运行结果:
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
面向对象编程(ObjectOrientedProgramming,OOP)是一种非常流行的计算机编程架构。Lua中最基本的结构是table,所以需要用table
setmetatable(table,metatable)Lua中的每个值都可以用一个metatable。这个metatable就是一个原始的Luatable,
与大多数可以面向对象的编程语言不一样,PHP是同时支持面向过程和面向对象的编程方式,PHP开发者可以在面向过程和面向对象二者中自由选择其一或是混合使用,不过由于
一、面向过程编程与面向对象编程的区别众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到
类在很多面向对象的语言中有类(class)的概念,对象是类的实例。Lua中不存在类的概念。Lua就像JavaScript一样是面向原型的语言(http://en