Lua程序设计(一)面向对象概念介绍



完整代码
local mt = {}
mt.__add = function(t1,t2)
print("两个Table 相加的时候会调用我")
end
local t1 = {}
local t2 = {}
-- 给两个table 设置新的元表,一个元表就是一个table的值
setmetatable(t1,mt) -- meta:元素
setmetatable(t2,mt)
-- 进行相加操作
local t = t1 + t2
print(t)
--[[输出结果
两个Table 相加的时候会调用我
nil
--]]



完整代码
-- 创建一个元表 (是创建一个类吗?)
local mt = {}
mt.__add = function(s1, s2)
local result = ""
if s1.sex == "boy" and s2.sex == "girl" then
result = "一个男孩和一个女孩的家庭"
elseif s1.sex == "girl" and s2.sex == "girl" then
result = "两个女孩的家庭"
else
result = "未知孩子的家庭"
end
return result
end
-- 创建两个table,可以想象成是两个类的对象(实例化两个类)
local s1 = { name = "Per1", sex = "boy" }
local s2 = { name = "Per2", sex = "girl" }
-- 给两个table 设置新的元表,一个元表就是一个table的值
setmetatable(s1, mt)
setmetatable(s2, mt)
-- 进行加法操作
local result = s1 + s2
print(result) -- 一个男孩和一个女孩的家庭




----------------------------------------------------------- Lua面向对象2
local t = {
name = "Tinywan"
}
local mt = {
__index = function(table,key)
print("虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来"..key)
end
}
setmetatable(t,mt)
print(t.name)
print(t.age)
--[[输出结果
Tinywan
虽然你调用了我不存在的字段和方法,不过没关系,我能检测出来age
nil
--]]

----------------------------------------------------------- Lua面向对象2
local t = {
name = "Tinywan"
}
local mt = {
money =
}
mt.__index = mt
setmetatable(t,mt)
print(t.money)
-- 输出结果

----------------------------------------------------------- Lua面向对象2
local t = {
name = "Tinywan"
}
local mt = {
__index = {
money =
}
}
setmetatable(t,mt)
print(t.money)
-- 输出结果

----------------------------------------------------------- Lua面向对象2
local smartMan = {
name = "Tinywan",
age = ,
money = ,
say_fun = function()
print("Tinywan say 大家好")
end
} local t1 = {}
local t2 = {}
local mt = { __index = smartMan } -- __index 可以是一个函数,也可以是一个函数
setmetatable(t1, mt)
setmetatable(t2, mt)
print(t1.money)
t2.say_fun()
--- 输出结果
--
-- Tinywan say 大家好


Lua程序设计(一)面向对象概念介绍的更多相关文章
- Lua程序设计(二)面向对象概念介绍
----------------------------------------------------------- Lua面向对象3 local smartMan = { name = " ...
- 面向对象【day07】:面向对象概念介绍(二)
本节内容 1.概念 2.特性 3.面向对象介绍 一丶概念 1.面向对象编程 OOP(Object-Oriented Programming)编程是利用“类”和“对象”来创建各种模型来实现对真实世界的描 ...
- 关于Lua程序设计{读书笔记}
1.lua中的标识符可以是由任意字母.数字和下划线构成的字符串,但不能以数字开头.2.lua将通常类似"_VALUE"的标识符作为保留标识符3.lua的保留字 and break ...
- lua程序设计(一)
摘要:lua程序设计第二版学习笔记 脚本语言的基础语法大都比较简单,这里只列举一些lua独有,或者需要特别注意的语法点. 书中前三章的内容是一些惯常的引言,基础数据类型,运算符等内容,相对简单,这里就 ...
- 深入浅出Win32多线程程序设计之基本概念
一.深入浅出Win32多线程程序设计之基本概念[转] 引言 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的程序员也只能通过驻留内存的方式实现所谓 ...
- Cocos2d-x 脚本语言Lua中的面向对象
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...
- lua中的面向对象编程
简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 上述代码会输出tb1 ~= tb2.说明两个具有相同值得对象是两个不同的对象,同时在Lua中table是引用类型的 ...
- 《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)
要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?&qu ...
- Lua和C++交互 学习记录之九:在Lua中以面向对象的方式使用C++注册的类
主要内容转载自:子龙山人博客(强烈建议去子龙山人博客完全学习一遍) 部分内容查阅自:<Lua 5.3 参考手册>中文版 译者 云风 制作 Kavcc vs2013+lua-5.3.3 在 ...
随机推荐
- GTK学习笔记————创建窗口
创建gtk1.c文件 代码 #include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; gtk_ ...
- 普通程序员看k8s的账户管理
一.知识准备 ● 账户管理分为:userAccount与serviceAccount ● userAccount:通常是给人设计使用的,并且userAccount不在k8s集群内管理 ● servic ...
- PHP 设计模式六大原则
http://www.cnblogs.com/yujon/p/5536118.html 设计模式六大原则(1):单一职责原则 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责 设计模 ...
- LeetCode 463. Island Perimeter岛屿的周长 (C++)
题目: You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 repr ...
- 团队作业week9
1. Bug bash ▪ How many bugs is found in your bug bash? 2. Write a blog to talk about your scenario t ...
- 【读书笔记】Linux内核设计与实现(第十八章)
18.1 准备开始 需要: 1.一个确定的bug.但是,大部分bug通常都不是行为可靠定义明确的. 2.一个藏匿bug的内核版本. 18.2 内核中的bug bug发作时的症状: 明白无误的错误代码( ...
- js生成uuid代码
function uuid() { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 3 ...
- C++:派生类的构造函数和析构函数的调用顺序
一.派生类 在C++编程中,我们在编写一个基类的派生类时,大致可以分为四步: • 吸收基类的成员:不论是数据成员还是函数成员,派生类吸收除基类的构造函数和析构函数之外的全部成员. • 改造基类函数:在 ...
- String基础
一: String,StringBuffer与StringBuilder的区别??String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程 ...
- ubuntu 12.04下 eclipse的安装
1首先下载有关的JDK sudo apt-get install openjdk-7-jre 由于是源内的东西,所以只许执行上面这一步,就自动帮你下载 安装 以及配置,无需繁琐的操作. 这里ubunt ...