国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

Lua中的類編程代碼實例

2024-07-21 23:04:42
字體:
來源:轉載
供稿:網友

Lua的類有點像javascript,但是更簡明靈活,table即對象,對象就是類。Metatables比起ruby里的MetaClass更加好用,缺點是實例化和繼承的代碼有點多,

不像ruby里的“<”和“<<”,繼承鏈就是查找方法時的方法鏈。

Account={  test1=function(a) print("Account test1") end}Account.test2=function(a) print("Account test2") endfunction Account.test3(a) print("Account test3") endfunction Account:new (o) --類的實例化  o = o or {}  setmetatable(o, self)  self.__index = self  return oendfunction Account.print0(o,a)  print(a)endfunction Account:print1(a)  print(a)end--方法定義測試Account.test1()Account.test2()Account.test3()--類測試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)endacc.specialMethod("smt test")--繼承測試SpecialAccount = Account:new()s = SpecialAccount:new{limit=1000.00}--多重繼承測試Named = {}function Named:getname ()  return self.nameendfunction Named:setname (n)  self.name = nendlocal function search (k, plist)  for i=1, table.getn(plist) do    local v = plist[i][k]    if v then return v end  endendfunction createClass (...)  local c = {}   -- new class  setmetatable(c, {__index = function (t, k)  return search(k, arg)end})c.__index = cfunction c:new (o)  o = o or {}  setmetatable(o, c)  return oend  return cendNamedAccount = createClass(Account, Named)account = NamedAccount:new{name = "Paul"}print(account:getname())

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松滋市| 龙游县| 荆门市| 内黄县| 台南市| 海阳市| 称多县| 大方县| 光山县| 龙泉市| 沙坪坝区| 杭锦旗| 鹿泉市| 正阳县| 兰州市| 同江市| 常德市| 上思县| 阜南县| 大兴区| 连南| 吉首市| 杭锦旗| 岑巩县| 兴安盟| 怀集县| 新闻| 上思县| 基隆市| 宝丰县| 北碚区| 策勒县| 米易县| 伊吾县| 临沂市| 阳山县| 海阳市| 佛坪县| 天门市| 揭阳市| 定襄县|