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中写排序算法实例,本文用一个选择排序算法为例讲解如何在Lua中写一个排序算法,需要的朋友可以参考下
    2015-04-04
  • Lua中__index和__newindex之间的沉默与合作

    Lua中__index和__newindex之间的沉默与合作

    这篇文章主要介绍了Lua中__index和__newindex之间的沉默与合作,本文着重讲解了__index和__newindex之间的联系,需要的朋友可以参考下
    2014-09-09
  • Lua游戏开发教程之时区问题详解

    Lua游戏开发教程之时区问题详解

    时间显示问题说白了就是时差问题,这篇文章主要给大家介绍了关于Lua游戏开发教程之时区问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Lua常用时间函数使用实例

    Lua常用时间函数使用实例

    这篇文章主要介绍了Lua常用时间函数使用实例,本文直接给出使用代码实例,并附有详细注释,要用到哪个复制即可,需要的朋友可以参考下
    2015-04-04
  • linux系统安装Nginx Lua环境

    linux系统安装Nginx Lua环境

    因项目需求,需要在Linux系统下搭建一套nginx+lua的开发环境,经过一番摸索,现总结如下,希望大家能够喜欢。
    2016-12-12
  • Lua中的table学习笔记

    Lua中的table学习笔记

    这篇文章主要介绍了Lua中的table学习笔记,本文讲解了table.concat、table.insert、table.maxn、table.pack、 table.remove、table.sort等方法的使用,需要的朋友可以参考下
    2014-12-12
  • Lua中全局变量与非全局环境介绍

    Lua中全局变量与非全局环境介绍

    这篇文章主要介绍了Lua中全局变量与非全局环境介绍,本文讲解了全局变量的原形、非全局的环境、改变函数的全局变量环境、使用__index元方法保留原来的_G,需要的朋友可以参考下
    2014-09-09
  • lua文件操作详解

    lua文件操作详解

    Lua中关于文件处理操作是本文要介绍的内容,主要是来了解并学习lua中文件的相关操作,具体内容的实现来看本文详解。
    2016-03-03
  • Lua判断变量是否为数字、字符串是否可以转换为数字等

    Lua判断变量是否为数字、字符串是否可以转换为数字等

    这篇文章主要介绍了Lua判断变量是否为数字、字符串是否可以转换为数字等,本文讲解了Lua 判断是字符还是数字的方法、Lua判断数字的方法、判断可否转换为数字的方法、判断并且准备一个初值的方法,需要的朋友可以参考下
    2015-04-04
  • Lua下基本的网络编程示例

    Lua下基本的网络编程示例

    这篇文章主要介绍了Lua下基本的网络编程示例,包括简单的服务器的搭建和相关web组件的介绍等,需要的朋友可以参考下
    2015-05-05

最新评论