Lua 类

1人阅读 评论(0) 收藏 举报
分类:

用表实现类机制

例程1

CPerson= {name="default name", age= 10, sex = "fale"}

-- 构造方法
function CPerson.new(t,o)
	o = o or {}
	setmetatable(o, t)
	t.__index = t	-- 从一个表o中访问另外一个t表的元素,通过元表实现
	return o
end
-- 方法
function CPerson.Walk()
	print("walk");
end

function CPerson.Print(tb)
	print(tb.name, tb.age, tb.sex);
end

-- 创建一个空对象
local p = CPerson.new(CPerson)
p.Walk()

local p1 = CPerson.new(CPerson, {name = "lisi", age = 18})
p1.Print(p1)
运行结果
walk

lisi 18 fale

例程2 改进

CPerson= {name="default name", age= 10, sex = "fale"}

-- 构造方法
function CPerson:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self
	return o
end
-- 方法
function CPerson:Walk()
	print("walk");
end

function CPerson:Print()
	print(self.name, self.age, self.sex);
end

-- 创建一个空对象
local p = CPerson:new()	-- 把 CPerson 自动传入参数
p:Walk()

local p1 = CPerson:new({name = "lisi", age = 18})
p1:Print(p1)
运行结果
walk

lisi 18 fale

继承
CPerson= {name="default name", age= 10, sex = "fale"}

-- 构造方法
function CPerson:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self
	return o
end
-- 方法
function CPerson:Walk()
	print("walk");
end

function CPerson:Print()
	print(self.name, self.age, self.sex);
end

Stu = {}
function Stu:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self

	setmetatable(self, CPerson)	-- 继承 CPerson
	CPerson.__index = CPerson
	return o
end

local p = Stu:new() -- 等价于 Stu.new(Stu, nil)
p:Walk() --  Walk 在 Stu 表中没有,就会查找元表 CPerson
运行结果

walk

重写

CPerson= {name="default name", age= 10, sex = "fale"}

-- 构造方法
function CPerson:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self
	return o
end
-- 方法
function CPerson:Walk()
	print("walk");
end

function CPerson:Print()
	print(self.name, self.age, self.sex);
end

Stu = {}
function Stu:new(o)
	o = o or {}
	setmetatable(o, self)
	self.__index = self

	setmetatable(self, CPerson)	-- 继承 CPerson
	CPerson.__index = CPerson
	return o
end

function Stu:Walk()
	print("stu walk")
end

local p = Stu:new() -- 等价于 Stu.new(Stu, nil)
p:Walk() --  Walk 在 Stu 表中有,就不会去元表 CPerson 中查找
运行结果

stu walk

查看评论

用TAPI 3.0 建立呼叫中心

用TAPI 3.0 建立呼叫中心微软 2000/09/09  在以IP技术为基础的局域网、广域网以及互联网上的IP电话能够将语音、数据和视频集成在一起,这是一项正在逐步发展并走向成熟的技术。IP电话使...
  • tchaikov
  • tchaikov
  • 2000-12-20 16:59:00
  • 1499

Lua 中实现类

Lua中是没有类的概念的,但是程序猿说要面向对象,所以就有了。
  • cp790621656
  • cp790621656
  • 2015-11-03 18:30:15
  • 1925

Lua类函数的几种构造方法

一、使用module函数在Lua的开头文件中声明:module("ClassA", package.seeall)后面声明函数:function test()end则在其他Lua文件中只要requir...
  • asmcvc
  • asmcvc
  • 2017-06-02 18:12:26
  • 1034

lua学习:lua中“类”的实现

Lua中的table就是一种对象,这句话可以从3个方面来证实。首先,table与对象一样可以拥有状态。其次,table也与对象一样拥有一个独立于其值的标识(一个self)。例如,两个具有相同值的对象(...
  • losophy
  • losophy
  • 2014-03-05 16:08:43
  • 31140

Lua绑定C++类

原文:http://blog.csdn.net/chenee543216/article/details/12074771 以下是代码: Animal.h文件 #pragma once #ifndef...
  • penguin_whl
  • penguin_whl
  • 2014-03-20 17:32:49
  • 4095

Lua学习笔记(二):Lua中的类型介绍

概述:     Lua是一种动态类型的语言,在语言中没有类型定义的语法,每个值都“携带”了他自身的类型信息,我们可以用 type()函数来检查起类型。          lua支持的类型:lua总...
  • Andy_93
  • Andy_93
  • 2017-03-30 23:12:19
  • 704

Lua调用C++类要点

Lua相关学习参考链接:点击打开链接   Lua调用C++类要点: 1.       为此类建立一个全局表,表名为类名tbClass; lua_newtable(L); int metho...
  • suxinpingtao51
  • suxinpingtao51
  • 2013-09-20 21:50:00
  • 2164

第二章 Lua使用C++中的类

Lua使用C++中的类——调用方法  本以为在Lua中使用C++的类一件非常复杂的事情。毕竟C++的类与Lua有那么多的不同。但是,困难都是纸老虎,只要想办法问题很容易就解决了。         ...
  • zhanghefu
  • zhanghefu
  • 2014-02-10 22:33:47
  • 3214

lua继承c++类

local MyScrollView =class("MyScrollView",function () local scrollview = cc.ScrollView:create() ...
  • five50
  • five50
  • 2014-02-28 10:36:51
  • 1687

C++导入自定义类到lua的详细分析

主要讲解了c++自定义类导出到lua中的原理实现,附带实例,适合入门学习
  • shaoqingbi
  • shaoqingbi
  • 2016-03-31 12:44:16
  • 975
    个人资料
    持之以恒
    等级:
    访问量: 918
    积分: 689
    排名: 7万+
    文章存档
    最新评论