Lua 模拟类的操作
来源:互联网 发布:mac word文件丢失 编辑:程序博客网 时间:2024/04/30 10:13
1.如果使用Lua编写面向对象的程序需要导入一个文件叫做extern.lua
function clone(object) local lookup_table = {} local function _copy(object) if type(object) ~= "table" then return object elseif lookup_table[object] then return lookup_table[object] end local new_table = {} lookup_table[object] = new_table for key, value in pairs(object) do new_table[_copy(key)] = _copy(value) end return setmetatable(new_table, getmetatable(object)) end return _copy(object)end--Create an class.function class(classname, super) local superType = type(super) local cls if superType ~= "function" and superType ~= "table" then superType = nil super = nil end if superType == "function" or (super and super.__ctype == 1) then -- inherited from native C++ Object cls = {} if superType == "table" then -- copy fields from super for k,v in pairs(super) do cls[k] = v end cls.__create = super.__create cls.super = super else cls.__create = super end cls.ctor = function() end cls.__cname = classname cls.__ctype = 1 function cls.new(...) local instance = cls.__create(...) print("super type = "..superType) print("classname is "..classname) -- copy fields from class to native object for k,v in pairs(cls) do print("k="..k) instance[k] = v end instance.class = cls instance:ctor(...) return instance end else -- inherited from Lua Object if super then cls = clone(super) cls.super = super else cls = {ctor = function() end} end cls.__cname = classname cls.__ctype = 2 -- lua cls.__index = cls function cls.new(...) local instance = setmetatable({}, cls) instance.class = cls instance:ctor(...) return instance end end return clsendfunction schedule(node, callback, delay) local delay = CCDelayTime:create(delay) local callfunc = CCCallFunc:create(callback) local sequence = CCSequence:createWithTwoActions(delay, callfunc) local action = CCRepeatForever:create(sequence) node:runAction(action) return actionendfunction performWithDelay(node, callback, delay) local delay = CCDelayTime:create(delay) local callfunc = CCCallFunc:create(callback) local sequence = CCSequence:createWithTwoActions(delay, callfunc) node:runAction(sequence) return sequenceend
2.创建一个类 testClass.lua
require "extern"Student=class("Student")function Student:ctor(...)self.sno = nil --学号self.name = nil --姓名self.sex = nil --性别 endfunction Student:setSno(sno)if sno ~= nil then self.sno=sno endendfunction Student:getSno()return self.sno endfunction Student:setName(name)if name ~= nil then self.name=name end end function Student:getName()return self.nameend function Student:setSex(sex)if sex ~= nil then self.sex=sex endendfunction Student:getSex()return self.sex endfunction Student:print()print ("sno is :"..self:getSno().."\tsname is :"..self:getName().."\tsSex is:"..self:getSex())end
3 把类实例化对象
require "testClass"student=Student.new()student:setSno("1")student:setName("Night");student:setSex("Male")student:print()
0 0
- Lua 模拟类的操作
- lua模拟类的继承
- Lua模拟C#的类继承
- Lua 中模拟 类
- Lua的string操作
- lua io的操作
- lua的select操作
- Lua的IO操作
- lua 的io操作
- Lua模拟类,继承,私密
- lua脚本语言的学习-----------------lua栈操作
- LUA-TABLE数据类型的操作
- Lua的文件读写操作
- lua的I/O操作
- lua相关的文件操作
- lua中io的操作
- lua中集合的操作
- 模拟二进制的"|" "&"操作
- Cocos2d-x游戏开发之Lua开发ide的搭建
- xcode5时代如何设置Architectures和Valid Architectures
- 模拟题 czy的后宫
- Service和activity如何通讯
- php日期相关
- Lua 模拟类的操作
- Oracle Statistic 统计信息 小结
- 如何使用Git上传项目代码到代码服务器
- Python-操作Excel
- Python基础编程(九)魔法方法、属性和迭代器
- Ormlite开源数据库框架
- 12.3
- POJ 2329 (暴力+搜索bfs)
- textarea计算输入字符大小并限制输入