lua的简单对象实现以及简单继承
来源:互联网 发布:软件融合器 编辑:程序博客网 时间:2024/05/29 13:14
定义一个函数,返回值是一个对象。 这个就像显示定义一个构造函数一样,只不过最后要return一个对象。
在函数里面定义对象的变量名和函数。
注意: 在创建函数内部使用 self加引号来表示对象的函数(self:getName())
使用self加点来使用对象的变量。(self.name)
成员方法的定义
function obj:method(a1, a2, ...) … end 等价于
function obj.method(self, a1, a2, ...) … end等价于
obj.method = function (self, a1, a2, ...) … end
成员方法的调用
obj:method(a1, a2, …) 等价于
obj.method(obj, a1, a2, ...)
使用方法不对会报一下错误。翻译一下就是,尝试索引self的一个字符串变量,但是返回在查找不到的信息。
lua: object.lua:4: attempt to index local 'self' (a string value)
stack traceback:
object.lua:4: in function 'SetName'
object.lua:24: in main chunk
[C]: in ?
function create(name, id) local obj = {name = name, id =id } function obj:SetName(name) self.name = name end function obj:SetId(id) self.id = id end function obj:getName() return self.name end function obj:getId() return self.id end function obj.getInfo(self) return self.id + 234 end return objendo1 = create("Sam", 001)o2 = create("Ben", 999)o2:SetName("Bunny")print("获取所有信息",o2.getInfo(o2))print("名字:", o2.name, " ", o2.id)
顺便看了一下简单的继承。
lua的这种方式对于C++程序员或许会感到有点不可思议,但是就单纯的使用方式来看,简单而功能强大。
lua的继承就是在对象里面使用如上的基函数创建一个基对象,然后来完善这个基对象再进行返回,就变成了一个继承的对象。
(lua没有基函数基对象这个说法吧,个人理解的,对C++程序员或许容易理解些)
function createRobot(name, id) local obj = { name = name, id = id } function obj:SetName(name) self.name = name end function obj:GetName() return self.name end function obj:GetId() return self.id end return objendfunction createFootballRobot(name,id, position) local obj = createRobot(name, id) obj.position = "right back" function obj:SetPosition(p) self.position = p end function obj:GetPosition() return self.position end return objend
- lua的简单对象实现以及简单继承
- Lua中多重继承的简单实现
- 继承的简单实现
- lua 一个简单的继承/派生关系
- 对象继承的简单总结
- 堆栈的简单lua实现
- lua 队列的简单实现
- lua简单类的实现
- 简单的Lua活动实现
- Lua 栈的简单实现
- Lua 面向对象之继承的实现
- NodeJs -JavaScript 面向对象编程-关于继承的简单实现
- Ext简单实现的继承
- Lua学习笔记之——类与继承的简单实现
- lua单链表简单实现
- 面向对象 的特性 继承 简单计算器
- 面向对象-简单的继承关系
- lua链表的简单实现
- <菜鸟学算法-A排序(shell排序)>
- 1.3 Debugging of Shaders (调试着色器)
- 一次心惊肉跳的服务器误删文件的恢复过程
- CCAnimationCache(动画存储池addAnimation removeAnimationByName animationByName addAnimationsWithDictionary
- Tweak the Dock
- lua的简单对象实现以及简单继承
- POJ1088
- 【Android】Handler机制源码详解(一)
- CCAnimation(CCAnimationFrame:m_fDelayUnits m_pUserInfo。 CCAnimation:)
- <菜鸟学算法-A排序(选择排序)>
- 读书心得
- 【大话设计模式】——简单工厂模式
- 移位运算及其compiler-dependent
- XAMPP无法启动MySql