
lua
zhangyin_blog
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
lua中点号和冒号的用法以及面向对象编程的基本实现原理
Lua面向对象编程 一、面向对象特征 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性 继承:继承的思路允许在不改变源程序的基础上对其进行扩充 使得原功能得以保存,新功能得以扩展 多态:同一操作作用于不同的对象 可以有不同的解释 产生不同的执行结果 在运行时 可以通过基类的指针来调用实现派生类的方法 抽象:简化复杂的显示问题的途径 可以为具体问题找到最恰当的类...原创 2019-03-25 17:48:51 · 500 阅读 · 0 评论 -
lua算数类元方法操作两个table举例
--找到表中最后一个元素的下标 function tableMax(t) local count = 0 for k,value in ipairs(t) do if (count < k) then count = k end end return count end local mt = {} mt. __add = function(mytable,n...原创 2019-03-28 16:02:02 · 971 阅读 · 0 评论 -
Lua元表的理解(二) __index __newindex 的实践
一、具有默认值的table --通过__index实现 首先 我们都知道table中的任何字段的默认值是nil 我们可以通过元表来修改table的默认值 function setDefault(t, d) local mt = { __index = function() return d end} setmetatable(t, mt) end function main() l...原创 2019-03-28 15:58:03 · 366 阅读 · 0 评论 -
lua调用c模块 c模块编写注意点
编写主旨是:编写的c函数都是static的 对外是私有的的 只提供一个外部公共的接口创建C模块 第一步:编写要注册的c函数 eg:static int add(int x,int y){return x+y;} static int sub(int x,int y){return x-y;} 第二步:将要注册的C函数通过类型为lua_Reg的数组保存 保存两个字段 字符串 = 函数指针 co...原创 2019-04-07 11:06:10 · 307 阅读 · 0 评论 -
lua元表的理解(一) __index __newindex
元表本质上来说是一种用来存放元方法的table 通过对应的key来得到value的值 作用就是修改一个值的行为 这种修改会覆盖原本该值可能存在的相应的预定义行为 lua中的每个值都可以有一个元表 只是table和userdata可以有各自独立的元表 而其他类型的值共享其类型所属的单一元表 lua代码只能设置table的元表 其他类型值的元表只能通过C代码设置 多个table可...原创 2019-03-28 10:59:47 · 1027 阅读 · 0 评论 -
Lua调用c模块
一、lua调用c模块总结 1.c函数库成为lua的一个模块 主要做法:将包含c函数的代码生成库文件 linux下是.so windows下是.dll 同时拷贝到lua运行环境的bin下(由于我用的是LuaTool运行环境 所以放在bin下 程序运行默认从bin下找) 这样lua解析器才可以找到.dll文件 2.编写c模块 (1)先编写需要注册的c函...原创 2019-03-27 21:03:01 · 9775 阅读 · 0 评论 -
lua中的位运算
lua5.1不支持位操作 自己实现 --数字转二进制 代码如下 其中需要注意的地方是 num = num / 2 并不像C中只得整数部分 所以需要处理一下值 用到了lua中math库的math.modf()函数 函数用法如下所示 print(math.modf(12.34)) ---》 12 0.34 数字转二进制代码 --数字转二进制 function ToSecond(num)...原创 2019-03-23 16:21:25 · 9270 阅读 · 3 评论 -
lua编写模块
编写模块注意的地方: 1.模块名必须与文件名相同 2.创建局部表来封装模块 达到私有性 共有性 3.将局部表赋给模块名后 摆脱函数对模块名的依赖 这样改变模块名只需改变文件名即可 4.利用环境解决 函数和变量依赖局部表名的调用 5.利用环境会造成当前环境不能访问外部的全局变量 可以通过设置元表 让当前全局变量_G继承外部的_G 方法一 创建一个table 并将所有需要导...原创 2019-03-23 16:20:41 · 451 阅读 · 0 评论 -
lua中require、dofile、loadfile对比
一、require require(moduleName):用来加载模块;其参数只要是文件名即可;利用模式匹配搜索加载文件;require只会被调用执行一次,会判断文件是否被加载避免重复加载; (1)模式匹配 require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数)转成实文件名的方法;每一个模式是一个包含可选的问号的文件名。匹配的时候Lua会首先将问号用虚文...原创 2019-03-23 16:20:00 · 629 阅读 · 0 评论 -
Lua继承的实现
实现继承的原理:利用table中的元表来实现 __index __index元方法:用于查看表中元素或方法是否存在 如果不存在则返回nil 如果存在 则返回__idnex表中的结果 --单一继承的实现 利用元表来实现继承 Account = {name = "lili", balance = 10} function Account:widthdraw(value) self.balanc...原创 2019-03-29 11:14:42 · 1279 阅读 · 0 评论