lua之class
来源:互联网 发布:天津seo 编辑:程序博客网 时间:2024/06/03 15:04
local _class={}
function class(super)
local class_type={}
class_type.ctor=false
class_type.super=super
class_type.new=function(...)
local obj={}
do
local create
create = function(c,...)
if c.super then
create(c.super,...)
end
if c.ctor then
c.ctor(obj,...)
end
end
create(class_type,...)
end
setmetatable(obj,{ __index=_class[class_type] })
return obj
end
local vtbl={}
_class[class_type]=vtbl
setmetatable(class_type,{__newindex=
function(t,k,v)
vtbl[k]=v
end
})
if super then
setmetatable(vtbl,{__index=
function(t,k)
local ret=_class[super][k]
vtbl[k]=ret
return ret
end
})
end
return class_type
end
现在,我们来看看怎么使用:
base_type=class() -- 定义一个基类 base_type
function base_type:ctor(x) -- 定义 base_type 的构造函数
print("base_type ctor")
self.x=x
end
function base_type:print_x() -- 定义一个成员函数 base_type:print_x
print(self.x)
end
function base_type:hello() -- 定义另一个成员函数 base_type:hello
print("hello base_type")
end
以上是基本的 class 定义的语法,完全兼容 lua 的编程习惯。我增加了一个叫做 ctor 的词,作为构造函数的名字。
下面看看怎样继承:
test=class(base_type) -- 定义一个类 test 继承于 base_type
function test:ctor() -- 定义 test 的构造函数
print("test ctor")
end
function test:hello() -- 重载 base_type:hello 为 test:hello
print("hello test")
end
现在可以试一下了:
a=test.new(1) -- 输出两行,base_type ctor 和 test ctor 。这个对象被正确的构造了。
a:print_x() -- 输出 1 ,这个是基类 base_type 中的成员函数。
a:hello() -- 输出 hello test ,这个函数被重载了。
0 0
- lua之class
- lua之class
- Lua之class
- Lua(3) ——Cocos之_语法糖class
- Lua(3) ——Cocos之_语法糖class
- Lua(2) ——Cocos之_语法糖class
- class() 高级用法 -- lua
- [Lua] class() 高级用法
- Cocos2dx-lua -- 入门-class
- lua cocos class方法
- cocos2dx-lua class
- class() 高级用法 --cocos2dx- lua
- cocos2dx lua class 继承问题
- Lua的类Class实现
- cocos2d-lua class 方法解释
- lua学习之--liu.lua
- 【Lua】Lua之面向对象
- Lua 基础之 Lua 程序
- Android音频系统之AudioFlinger
- 1分钟打900个渠道包,不是梦!
- GC学习笔记
- Delphi Form的释放和隐藏:free,hide,close
- USACO以前的1.3.3 [calfflac] manacher算法
- lua之class
- css中position属性说明
- weblogic服务上传word等文件直接打开问题解决
- linux学习(17)打包命令 tar
- mysql binlog
- 关于在bcb中调用外部程序的用法
- Android 去掉 listView Srollerview HorizontalScrollView 滑动到顶点时出现的阴影
- 对于彩色图像,PSNR的计算
- php表单验证