欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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í)行系統(tǒng)命令方法介紹

    Lua中執(zhí)行系統(tǒng)命令方法介紹

    這篇文章主要介紹了Lua中執(zhí)行系統(tǒng)命令方法介紹,Lua中有兩種方法可以執(zhí)行操作系統(tǒng)內(nèi)置命令,需要的朋友可以參考下
    2015-04-04
  • Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹

    Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹

    這篇文章主要介紹了Lua的編譯、執(zhí)行和調(diào)試技術(shù)介紹,本文著重講解了對(duì)錯(cuò)誤的處理,另外也講解了編譯和執(zhí)行等知識(shí),需要的朋友可以參考下
    2015-04-04
  • Lua學(xué)習(xí)筆記之類型與值

    Lua學(xué)習(xí)筆記之類型與值

    本文詳細(xì)的總結(jié)了Lua中的類型與值,對(duì)于實(shí)際編程中容易出錯(cuò)的地方也進(jìn)行了詳細(xì)的總結(jié),十分的全面實(shí)用。有需要的小伙伴可以參考下。
    2015-04-04
  • Lua中的迭代器和泛型for介紹

    Lua中的迭代器和泛型for介紹

    這篇文章主要介紹了Lua中的迭代器和泛型for介紹,任何一種結(jié)構(gòu),只要允許你遍歷集合中所有元素的都可稱之為迭代器,本文就講解了Lua中迭代器的相關(guān)知識(shí)和代碼實(shí)例,并講解了泛型for的語(yǔ)法,需要的朋友可以參考下
    2015-04-04
  • Lua操作字符串的5個(gè)代碼片段分享

    Lua操作字符串的5個(gè)代碼片段分享

    這篇文章主要介紹了Lua操作字符串的5個(gè)代碼片段分享,本文講解了匹配字符串中的數(shù)字、字母和下劃線、替換字符串中的指定字符、判斷字符串中是否有目標(biāo)字串、從文件的絕對(duì)路徑中獲取到文件名等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Lua在各個(gè)操作系統(tǒng)中的開(kāi)發(fā)環(huán)境配置教程

    Lua在各個(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-05
  • Lua利用cjson讀寫json示例分享

    Lua利用cjson讀寫json示例分享

    本文結(jié)合本人的實(shí)際使用經(jīng)驗(yàn)和代碼示例,介紹如何在Lua中對(duì)json進(jìn)行encode和decode,需要的朋友可以參考下
    2014-11-11
  • Lua中設(shè)置table為只讀屬性的方法詳解

    Lua中設(shè)置table為只讀屬性的方法詳解

    這篇文章主要給大家介紹了關(guān)于Lua中設(shè)置table為只讀屬性的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-07-07
  • Lua獲取utf8字符串長(zhǎng)度和字符串截取并用...代替

    Lua獲取utf8字符串長(zhǎng)度和字符串截取并用...代替

    這篇文章主要介紹了Lua獲取utf8字符串長(zhǎng)度和字符串截取并用...代替,本文直接給出兩個(gè)函數(shù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究

    Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究

    這篇文章主要介紹了Lua中的協(xié)同程序之resume-yield間的數(shù)據(jù)返回研究本文講解了resume的參數(shù)、resume函數(shù)的第二個(gè)返回值、yield的返回值等內(nèi)容,需要的朋友可以參考下
    2014-09-09

最新評(píng)論