LUA对象
Rectangle = {width = , height = , area = };
function Rectangle:new(o, width, height)
o = o or {};
setmetatable(o, self);
self.__index = self;
self.width = width or ;
self.height = height or ;
self.area = width * height;
return o;
end
function Rectangle:Area()
print("矩形面积:" .. self.area);
end
r = Rectangle:new(nil, , );
print(r.width);
r:Area();
Car = {};
function Car:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
function Car:Driver()
print("car can driver");
end
BMW = Car:new(nil);
function BMW:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
--此处重写了父类Car类的Driver方法
function BMW:Driver()
print("BMW car can driver");
end
print("代码运行:");
c = Car:new(nil);
c.Driver();
print("BMW继承Car");
bmw = BMW:new();
bmw.Driver();
Car = {};
function Car:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
function Car:Driver()
print("car can driver");
end
function Car:Oil()
print("I need Oil");
end
BMW = Car:new(nil);
function BMW:new()
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
--此处重写了父类Car类的Driver方法
function BMW:Driver()
print("重写Driver:BMW car can driver");
end
function BMW:Price()
print("BMW cost 10000");
end
print("-------代码运行-------");
c = Car:new();
c.Driver();
c.Oil();
print("-------BMW继承Car-------");
bmw = BMW:new();
bmw.Driver();
bmw:Oil();
bmw:Price(); --调用类中方法可用:或.来调用
base.lua脚本
Base = {};
function Base:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
function Base:Common()
print("Base common function");
end
function hello()
print("hello");
end
require("base");
hello();
b = Base:new(nil);
b.Common();
Lua8 = Base:new(nil);
function Lua8:new(o)
o = o or {};
setmetatable(o, self);
self.__index = self;
return o;
end
function Lua8:Common()
print("重写Base的Common方法");
end
l = Lua8:new(nil);
l:Common();
Student = {};
Student.__index = Student;
function Student:new(name, age)
local temp = {};
setmetatable(temp, Student);
self.name = name;
self.age = age;
return temp;
end
function Student:info()
print("name:" .. self.name .. " age:" .. self.age);
end
stu = Student:new("zhangsan", );
stu:info(stu);
Student = {};
function Student:new(o, name, age)
o = o or {};
setmetatable(o, self);
self.__index = self;
self.name = name;
self.age = age;
return o;
end
function Student:info()
print("name:" .. self.name .. " age:" .. self.age);
end
stu = Student:new(nil, "zhangsan", );
stu:info(stu);
LUA对象的更多相关文章
- 传Lua对象到Cpp
传Lua对象到Cpp (金庆的专栏) 摘自:http://raycast.net/lua-intf 以下代码演示了Lua函数和表传入Cpp进行处理: std::string acceptStuff(L ...
- xlua中lua对象到c#对象的转型
lua中的类型 基础类型 #define LUA_TNIL 0 #define LUA_TBOOLEAN 1 #define LUA_TLIGHTUSERDATA 2 #define LUA_TNUM ...
- 开源基于lua gc管理c++对象的cocos2dx lua绑定方案
cocos2dx目前lua对应的c++对象的生命周期管理,是基于c++析构函数的,也就是生命周期可能存在不一致,比如c++对象已经释放,而lua对象还存在,如果这时候再使用,会有宕机的风险,为此我开发 ...
- Lua 之面向对象编程
Lua 之面向对象编程 Lua并不是为面向对象而设计的一种语言,因此,仅从原生态语法上并不直接支持面向对象编程,但Lua的设计中仍然包含了很多面向对象的思想,理解它们也更有助于理解Lua自身的一些高级 ...
- Lua 之数据结构
Lua 之数据结构 数组 通过整数下标访问的table中的元素,即是数组,下标默认从1开始. 一个创建二维数组的例子: mt = {} , do mt[i] = {} , do mt[i][j] = ...
- C++实现对lua访问的封装
这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所 ...
- LUA表克隆方法归纳
lua表克隆 将lua一个表, 克隆出一份为一个独立的另外一个表. 对于一个module, 如果在require之后,获得的表对象, 不能直接修改, 例如lua缓存此表, 但是多次逻辑执行, 都使用的 ...
- cocos2d-x lua绑定解析
花了几天时间看了下cocos2d-x lua绑定那块,总算是基本搞明白了,下面分三部分解析lua绑定: 一.lua绑定主要用到的底层函数 lua绑定其本质就是有一个公用的lua_Stack来进行C和L ...
- Lua 5.1 参考手册
Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes 云风 译 www.codingno ...
随机推荐
- ethersjs运行时出现的问题
1.在运行部署在ganache1.1.0上的合约中的某个函数时,出现了这样的问题,之前部署在geth上时并没有这样的问题 userdeMacBook-Pro:test-ethers user$ nod ...
- Apollo2.5摄像头安装
前言:在Apollo美研团队和长沙CiDi团队的支持下,最近完成了Apollo推荐的摄像头AR023ZWDR(Rev663F12)调试,在这里对Apollo的笔记做一个补充,希望以后的开发者不用在踩我 ...
- Maven下使用Junit对Spring进行单元测试
主要步骤 1. 在工程的pom文件中增加spring-test的依赖: <dependency> <groupId>org.springframework</groupI ...
- 【51nod 1685】 第K大区间2
题目描述: 定义一个长度为奇数的区间的值为其所包含的的元素的中位数.现给出n个数,求将所有长度为奇数的区间的值排序后,第K大的值为多少. 样例解释: [l,r]表示区间的值 [1]:3 [2]:1 [ ...
- NMON监控linux性能
NMON监控linux性能 一.下载nmon压缩包,下载地址:http://download.csdn.net/download/fhqsse220/6699865 二.安装方法: 1.将nmon_l ...
- 框架 Hibernate 2
持久化类百度百科 http://baike.baidu.com/link?url=gNus-8jhK0Mi401aIR-16YUAnWKzOJfeMagUV8_t5iG8235JyjMrmZPd7rI ...
- linux下安装php扩展amqp
1 安装扩展必要依赖 rabbitmq-c 安装包地址:https://github.com/alanxz/rabbitmq-c/releases wget -c https://github.com ...
- 【Javascript-基础-Date】本地时间与UTC(GMT)时间转换
UTC(GMT) 整个地球分为二十四时区,每个时区都有自己的本地时间.在国际无线电通信场合,为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinat ...
- 记2019年目标之一没有996的大数据分析BI实战历程
本文略长,阅读大约需要10分钟. 懵懵懂懂的学习了python,然后一发不可收拾的爱上了python大数据分析,慢慢的走进了大数据的学堂,学习如何大数据挖掘,大数据分析,到BI系统建设使用. 大数据的 ...
- PLSQL Developer 12 注册码
PLSQL Developer 12 注册码product code: 4vkjwhfeh3ufnqnmpr9brvcuyujrx3n3le serial Number:226959 password ...