Lua編程示例(二):面向?qū)ο蟆etatable對(duì)表進(jìn)行擴(kuò)展
更新時(shí)間:2015年07月09日 10:33:30 投稿:junjie
這篇文章主要介紹了Lua編程示例(二):面向?qū)ο蟆etatable對(duì)表進(jìn)行擴(kuò)展,本文直接給出實(shí)例代碼,需要的朋友可以參考下
counter = { count = 0 } function counter.get(self) return self.count end function counter:inc() self.count=self.count+1 end print(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 result end tb2={"aaa","bbb","ccc"} res=tb1+tb2 for i,v in ipairs(res) do print(v) end print() function mt.__unm(a) local result = setmetatable({},mt) for i=#a , 1 ,-1 do table.insert(result,a[i]) end return result end res=-tb1+tb2 for i,v in ipairs(res) do print(v) end print() function mt.__tostring(a) local result = "{" for i,v in ipairs(a) do result = result.." "..v end result = result.." } " return result end print(tb1) function mt.__index(tb1,key) print("there is no "..key.." in the table") return nil end print(tb1["fsy"]) function mt.__newindex(a,key,v) if( key == "haha") then error(" Stop laugh!",2) else rawset(a,key,v) end end tb1.haha="heihei"
運(yùn)行結(jié)果:
0 1 4 5 true alpha beta gamma aaa bbb ccc gamma beta alpha aaa bbb ccc { alpha beta gamma } there is no fsy in the table nil lua: my_test.lua:166: Stop laugh! stack traceback: [C]: in function 'error' my_test.lua:160: in function <my_test.lua:158> my_test.lua:166: in main chunk [C]: ?
相關(guān)文章
Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹
這篇文章主要介紹了Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹,本文著重講解了對(duì)錯(cuò)誤的處理,另外也講解了編譯和執(zhí)行等知識(shí),需要的朋友可以參考下2015-04-04Lua在各個(gè)操作系統(tǒng)中的開(kāi)發(fā)環(huán)境配置教程
這篇文章主要介紹了Lua在各個(gè)操作系統(tǒng)中的開(kāi)發(fā)環(huán)境配置教程,包括Mac OS和Windows和Linux這三大系統(tǒng)下的安裝,需要的朋友可以參考下2015-05-05Lua獲取utf8字符串長(zhǎng)度和字符串截取并用...代替
這篇文章主要介紹了Lua獲取utf8字符串長(zhǎng)度和字符串截取并用...代替,本文直接給出兩個(gè)函數(shù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-04-04Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究
這篇文章主要介紹了Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究本文講解了resume的參數(shù)、resume函數(shù)的第二個(gè)返回值、yield的返回值等內(nèi)容,需要的朋友可以參考下2014-09-09