Lua中的類(lèi)編程代碼實(shí)例
更新時(shí)間:2015年04月29日 09:13:57 投稿:junjie
這篇文章主要介紹了Lua中的類(lèi)編程代碼實(shí)例,本文直接用代碼講解類(lèi)的創(chuàng)建、類(lèi)的實(shí)例化、類(lèi)的方法調(diào)用、類(lèi)的繼承、類(lèi)的多重繼承等面向?qū)ο缶幊谭椒?需要的朋友可以參考下
Lua的類(lèi)有點(diǎn)像javascript,但是更簡(jiǎn)明靈活,table即對(duì)象,對(duì)象就是類(lèi)。Metatables比起ruby里的MetaClass更加好用,缺點(diǎn)是實(shí)例化和繼承的代碼有點(diǎn)多,
不像ruby里的“<”和“<<”,繼承鏈就是查找方法時(shí)的方法鏈。
Account={
test1=function(a) print("Account test1") end
}
Account.test2=function(a) print("Account test2") end
function Account.test3(a) print("Account test3") end
function Account:new (o) --類(lèi)的實(shí)例化
o = o or {}
setmetatable(o, self)
self.__index = self
return o
end
function Account.print0(o,a)
print(a)
end
function Account:print1(a)
print(a)
end
--方法定義測(cè)試
Account.test1()
Account.test2()
Account.test3()
--類(lèi)測(cè)試
acc=Account:new()
acc.test1()
acc.print0(acc,"dot print0")
acc:print0("not dot print0")
acc.print1(acc,"dot print1")
acc:print1("not dot print1")
acc.specialMethod=function(specialMethodTest)
print(specialMethodTest)
end
acc.specialMethod("smt test")
--繼承測(cè)試
SpecialAccount = Account:new()
s = SpecialAccount:new{limit=1000.00}
--多重繼承測(cè)試
Named = {}
function Named:getname ()
return self.name
end
function Named:setname (n)
self.name = n
end
local function search (k, plist)
for i=1, table.getn(plist) do
local v = plist[i][k]
if v then return v end
end
end
function createClass (...)
local c = {} -- new class
setmetatable(c, {__index = function (t, k)
return search(k, arg)
end})
c.__index = c
function c:new (o)
o = o or {}
setmetatable(o, c)
return o
end
return c
end
NamedAccount = createClass(Account, Named)
account = NamedAccount:new{name = "Paul"}
print(account:getname())
相關(guān)文章
Lua中使用.和:調(diào)用函數(shù)的區(qū)別
這篇文章主要介紹了Lua中使用.和:調(diào)用函數(shù)的區(qū)別,本文總結(jié)了它的調(diào)用函數(shù)的時(shí)傳入?yún)?shù)的區(qū)別,并給出了一個(gè)代碼實(shí)例,需要的朋友可以參考下2015-04-04
Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù)
這篇文章主要介紹了Lua教程(四):在Lua中調(diào)用C語(yǔ)言、C++的函數(shù),本文給出了多個(gè)示例講解如何在Lua中調(diào)用C/C++寫(xiě)的函數(shù),需要的朋友可以參考下2014-09-09
Lua中實(shí)現(xiàn)StringBuffer功能
這篇文章主要介紹了Lua中實(shí)現(xiàn)StringBuffer功能,本文給出了實(shí)現(xiàn)代碼和調(diào)用代碼,需要的朋友可以參考下2014-11-11

