• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Lua > Lua中的类编程代码实例

Lua中的类编程代码实例

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了lua实例,lua脚本实例,lua游戏脚本实例,lua 创建一个类,lua 类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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())
</div>

</div>

您可能想查找下面的文章:

  • 使用Lua编写Web端模板引擎的实例代码分享
  • Lua中遍历文件操作代码实例
  • Linux下编写Lua扩展so文件和调用方法实例
  • Lua中的类编程代码实例
  • Lua中写排序算法实例(选择排序算法)
  • 使用Lua作为C语言项目的配置文件实例
  • C语言中调用Lua函数实例
  • Lua多重继承代码实例
  • Lua中的函数代码实例
  • Lua UnPack函数用法实例

相关文章

  • LUA中的闭包(closure)浅析
  • 浅谈Lua的面向对象特性
  • Lua中的基本数据类型详细介绍
  • Lua调用自定义C模块
  • Lua中的string库(字符串函数库)总结
  • 在Lua程序中使用SQLite的教程
  • Lua利用cjson读写json示例分享
  • Lua极简入门指南(一):函数篇
  • Lua教程(一):Lua脚本语言介绍
  • Lua获取网络时间(获取时间同步服务器的时间)

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 举例简介Lua中函数的基本用法
    • Lua实现正序和倒序的文件读取方法
    • Lua文件读写详解
    • Lua中的协同程序之resume-yield间的数据返回研究
    • Lua教程(五):C/C++操作Lua数组和字符串示例
    • Lua编程示例(五): C语言对Lua表的读取和添加
    • Lua中使用.和:调用函数的区别
    • lua中使用packagepath解决多个项目的路径冲突问题
    • Lua table简明总结
    • Lua学习笔记之表达式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有