Lua中的類編程代碼實(shí)例
更新時(shí)間:2015年04月29日 09:13:57 投稿:junjie
這篇文章主要介紹了Lua中的類編程代碼實(shí)例,本文直接用代碼講解類的創(chuàng)建、類的實(shí)例化、類的方法調(diào)用、類的繼承、類的多重繼承等面向?qū)ο缶幊谭椒?需要的朋友可以參考下
Lua的類有點(diǎn)像javascript,但是更簡明靈活,table即對(duì)象,對(duì)象就是類。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) --類的實(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()
--類測(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中__index和__newindex之間的沉默與合作
這篇文章主要介紹了Lua中__index和__newindex之間的沉默與合作,本文著重講解了__index和__newindex之間的聯(lián)系,需要的朋友可以參考下2014-09-09
linux系統(tǒng)安裝Nginx Lua環(huán)境
因項(xiàng)目需求,需要在Linux系統(tǒng)下搭建一套nginx+lua的開發(fā)環(huán)境,經(jīng)過一番摸索,現(xiàn)總結(jié)如下,希望大家能夠喜歡。2016-12-12
Lua判斷變量是否為數(shù)字、字符串是否可以轉(zhuǎn)換為數(shù)字等
這篇文章主要介紹了Lua判斷變量是否為數(shù)字、字符串是否可以轉(zhuǎn)換為數(shù)字等,本文講解了Lua 判斷是字符還是數(shù)字的方法、Lua判斷數(shù)字的方法、判斷可否轉(zhuǎn)換為數(shù)字的方法、判斷并且準(zhǔn)備一個(gè)初值的方法,需要的朋友可以參考下2015-04-04

