Lua中的类编程代码实例

 更新时间:2015年04月29日 09:13:57   投稿:junjie  
这篇文章主要介绍了Lua中的类编程代码实例,本文直接用代码讲解类的创建、类的实例化、类的方法调用、类的继承、类的多重继承等面向对象编程方法,需要的朋友可以参考下

Lua的类有点像javascript,但是更简明灵活,table即对象,对象就是类。Metatables比起ruby里的MetaClass更加好用,缺点是实例化和继承的代码有点多,

不像ruby里的“<”和“<<”,继承链就是查找方法时的方法链。

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) --类的实例化

  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


--方法定义测试
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)
end

acc.specialMethod("smt test")

--继承测试
SpecialAccount = Account:new()
s = SpecialAccount:new{limit=1000.00}

--多重继承测试
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())

相关文章

  • Lua中使用.和:调用函数的区别

    Lua中使用.和:调用函数的区别

    这篇文章主要介绍了Lua中使用.和:调用函数的区别,本文总结了它的调用函数的时传入参数的区别,并给出了一个代码实例,需要的朋友可以参考下
    2015-04-04
  • Lua性能优化技巧(三):关于表

    Lua性能优化技巧(三):关于表

    这篇文章主要介绍了Lua性能优化技巧(三):关于表,本文讲解了一些关于表的优化技巧,需要的朋友可以参考下
    2015-04-04
  • Lua变量类型简明总结

    Lua变量类型简明总结

    这篇文章主要介绍了Lua变量类型简明总结,本文总结了Lua中的6种变量类型,并一一说明,需要的朋友可以参考下
    2014-10-10
  • Lua中的for循环和迭代器的秘密探究

    Lua中的for循环和迭代器的秘密探究

    这篇文章主要介绍了Lua中的for循环和迭代器的秘密探究,本文讲解了返回两个值的迭代器、for .. in .. do的真面目、迭代器函数、恒定状态、控制变量初值等内容,需要的朋友可以参考下
    2014-09-09
  • Lua学习笔记之类型与值

    Lua学习笔记之类型与值

    本文详细的总结了Lua中的类型与值,对于实际编程中容易出错的地方也进行了详细的总结,十分的全面实用。有需要的小伙伴可以参考下。
    2015-04-04
  • Lua中的table学习笔记

    Lua中的table学习笔记

    这篇文章主要介绍了Lua中的table学习笔记,本文讲解了table.concat、table.insert、table.maxn、table.pack、 table.remove、table.sort等方法的使用,需要的朋友可以参考下
    2014-12-12
  • Lua基础之运算符的使用示例

    Lua基础之运算符的使用示例

    今天小编就为大家分享一篇关于Lua基础之运算符的使用示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Lua教程(四):在Lua中调用C语言、C++的函数

    Lua教程(四):在Lua中调用C语言、C++的函数

    这篇文章主要介绍了Lua教程(四):在Lua中调用C语言、C++的函数,本文给出了多个示例讲解如何在Lua中调用C/C++写的函数,需要的朋友可以参考下
    2014-09-09
  • Lua中实现StringBuffer功能

    Lua中实现StringBuffer功能

    这篇文章主要介绍了Lua中实现StringBuffer功能,本文给出了实现代码和调用代码,需要的朋友可以参考下
    2014-11-11
  • Lua中string.lower()使用指南

    Lua中string.lower()使用指南

    这篇文章主要介绍了Lua中操作字符串的基本方法整理,是Lua入门学习中的基础知识,需要的朋友可以参考下
    2016-08-08

最新评论