Slog55_lua面向对象之lua类

  • ArthurSlog

  • SLog-55

  • Year·1

  • Guangzhou·China

  • Aug 30th 2018

微信扫描二维码,关注我的公众号
  • GitHub

  • 掘金主页

  • 简书主页

  • segmentfault

现实中的事情不是根据人的喜好而定的 比如长在你嘴里的智齿 大部分情况下 你会因为自己(的牙)而痛苦 直到忍痛拔掉 鲜血淋漓 也许痛过之后 才能回归正途


开发环境MacOS(High Sierra 10.13.5)

需要的信息和信息源:

  • github 完整代码

  • Object-Oriented Programming

  • Classes

  • Classes Inheritance

  • Classes Multiple Inheritance

  • Classes Privacy

  • Classes The Single-Method Approach

  • require

  • package

  • package Basic Approach

  • package Privacy

  • Packages and Files

  • Using the Global Table

  • Other Facilities

  • Programming in Lua

开始编码

  • 完整代码:

~/Desktop/lua_learningload/lua_class/Employee.lua

-- 文件名为 EmployeePackage.lua
-- 定义一个名为 EmployeePackage 的模块
-- Meta class
EmployeePackage = {empCount = 0, name = '0', salary = 0}-- 派生类的方法 new
function EmployeePackage:new (o,name,salary)e = e or {}setmetatable(e, self)self.__index = selfself.empCount = self.empCount + 1self.name = nameself.salary = salaryreturn e
end-- 派生类的方法 printArea
function EmployeePackage:info ()print("Total Employee ", self.empCount)print("Name : " , self.name)  print("Salary: " , self.salary)
endemp = Employee:new(nil,'xiaoming',1024)emp:info()
复制代码
  • 其中,Employee类如下:

~/Desktop/lua_learningload/lua_class/Employee/lua

-- 文件名为 EmployeePackage.lua
-- 定义一个名为 EmployeePackage 的模块
-- Meta class
EmployeePackage = {empCount = 0, name = '0', salary = 0}-- 派生类的方法 new
function EmployeePackage:new (o,name,salary)e = e or {}setmetatable(e, self)self.__index = selfself.empCount = self.empCount + 1self.name = nameself.salary = salaryreturn e
end-- 派生类的方法 printArea
function EmployeePackage:info ()print("Total Employee ", self.empCount)print("Name : " , self.name)  print("Salary: " , self.salary)
end
复制代码
  • 现在,切换至文件路径下

cd ~/Desktop/lua_learningload/lua_class/Employee.lua

  • 执行lua文件

lua ./Employee.lua

  • 执行结果:
Total Employee   1
Name :  xiaoming
Salary:     1024
复制代码
  • 另一方面,根据上一篇文章所讲,上面的这个lua类也可以作为一个lua包,在新的程序里导入

~/Desktop/lua_learningload/lua_class/

-- Meta class
EmployeePackage = {empCount = 0, name = '0', salary = 0}-- 派生类的方法 new
function EmployeePackage:new (o,name,salary)e = e or {}setmetatable(e, self)self.__index = selfself.empCount = self.empCount + 1self.name = nameself.salary = salaryreturn e
end-- 派生类的方法 printArea
function EmployeePackage:info ()print("Total Employee ", self.empCount)print("Name : " , self.name)  print("Salary: " , self.salary)
endreturn EmployeePackage
复制代码

~/Desktop/lua_learningload/lua_class/EmployeePackage.lua

-- run.lua 文件
-- EmployeePackage 模块为上文提到到 EmployeePackage.lua
-- 别名变量 p
local p = require("EmployeePackage")emp = p:new(nil,'xiaoming',1024)emp:info()
复制代码
  • 现在,切换至文件路径下

cd ~/Desktop/lua_learningload/lua_class/

  • 执行lua文件

lua ./run.lua

  • 执行结果:
Total Employee    1
Name :  xiaoming
Salary:     1024
复制代码
  • 至此,我们实现了一个lua类,并把这个lua类打包供其他lua程序使用。

欢迎关注我的微信公众号 ArthurSlog

微信扫描二维码,关注我的公众号

如果你喜欢我的文章 欢迎点赞 留言

谢谢

Slog55_lua面向对象之lua类相关推荐

  1. Python面向对象编程:类继承和其衍生术语

    Python面向对象编程03:类继承和其衍生术语 前面我们讲到过正则表达式字符等,上一篇分享了面向对象编程和类的结构,最后稍微提到了继承. Python面向对象编程:深度认识类class_ Pytho ...

  2. 面向对象中类和类的关系

    在面向对象方法中,我们在确定了类及类的属性和方法后.不可避免的要研究类和类之间的关系,正是这些关系将整个事情串联起来.使彼此之间有了联系,就像现实生活中,人与人交往中存在着不同的关系. 了解这些关系, ...

  3. python面向对象图片_Python面向对象-概念、类、实例

    OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计 ...

  4. python对象编程例子-python(十二)面向对象编程、类

    面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功 ...

  5. python面向对象编程的三大特性_Python面向对象总结及类与正则表达式详解

    Python3 面向对象 -------------------------------------------------------------------------------- 一丶面向对象 ...

  6. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

  7. Python面向对象之接口类(抽象类)

    Python面向对象之接口类(抽象类):就是制定一个规范.比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方法 ...

  8. Python面向对象-概念、类、实例

    Python面向对象-概念.类.实例 OOP--Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  9. PHP面向对象(OOP)----分页类

    PHP面向对象(OOP)----分页类 同验证码类,分页也是在个人博客,论坛等网站中不可缺少的方式,通过分页可以在一个界面展示固定条数的数据,而不至于将所有数据全部罗列到一起,实现分页的原理其实就是对 ...

最新文章

  1. 大数据架构+Lamba+Kappa+Unifield
  2. 清华大学朱文武团队夺冠AAAI 2021国际深度元学习挑战赛
  3. php v9 分页静态,PHPCMS V9自定义栏目伪静态实现方法(列表页/分页/内容页)
  4. mysql 导入sql脚本_mysql 导入 sql文件
  5. beautifulsoup网页爬虫解析_Python爬虫神器:PyQuery,解析网页更简单,小白也能学会
  6. 如何快速成长为技术大牛?阿里资深技术专家的经验告诉你
  7. 【链表】剑指offer:反转链表
  8. 牛客网–华为机试在线训练8:合并表记录
  9. Mybatis中的DataSource配置
  10. C#listview控件
  11. 计算机网络课设中:cisco关于nat的静态配置
  12. 大数据是什么?与云计算有什么关系?
  13. BI工具怎么选型--BI厂商有哪些--BI系统多少钱--BI工具2019排行
  14. 用vb编制一个计算机程序,用vb编了个数独计算器
  15. 介词 by during for from
  16. Http 请求头中 X-Requested-With 的含义
  17. 配置Snappy压缩
  18. 頑健なJavaプログラムの書き方
  19. 京东内部资料【自然搜索排序白皮书】打算混京东的屌丝必看!
  20. 解决Can't connect to HTTPS URL because the SSL module is not available.问题

热门文章

  1. java年利润编程题_[编程入门]利润计算-题解(Java代码)
  2. java获取行号_java – 如何获取一个方法的行号?
  3. 求以下double数组的平均值(四舍五入保留两位小数):
  4. 解决myeclipse报错500,MySQLyog报错误码问题
  5. Oracle 多表查询 --笛卡尔集--左连接--右连接--1999 语法--满外连接
  6. 变量的初始化与使用C语言程序注释,c - (为什么)使用未初始化的变量未定义行为?...
  7. leetcode22. 括号生成
  8. 数据结构课上笔记11
  9. 橙白oj18训练作业2-题解、代码
  10. 使用nginx分片功能提升缓存效率,支持可拖拽式播放视频