![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
lua
zhangyin_blog
这个作者很懒,什么都没留下…
展开
-
lua中点号和冒号的用法以及面向对象编程的基本实现原理
Lua面向对象编程一、面向对象特征封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性继承:继承的思路允许在不改变源程序的基础上对其进行扩充 使得原功能得以保存,新功能得以扩展多态:同一操作作用于不同的对象 可以有不同的解释 产生不同的执行结果 在运行时 可以通过基类的指针来调用实现派生类的方法抽象:简化复杂的显示问题的途径 可以为具体问题找到最恰当的类...原创 2019-03-25 17:48:51 · 423 阅读 · 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 endlocal mt = {} mt. __add = function(mytable,n...原创 2019-03-28 16:02:02 · 893 阅读 · 0 评论 -
Lua元表的理解(二) __index __newindex 的实践
一、具有默认值的table --通过__index实现首先 我们都知道table中的任何字段的默认值是nil 我们可以通过元表来修改table的默认值function setDefault(t, d) local mt = { __index = function() return d end} setmetatable(t, mt)endfunction main() l...原创 2019-03-28 15:58:03 · 300 阅读 · 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 · 251 阅读 · 0 评论 -
lua元表的理解(一) __index __newindex
元表本质上来说是一种用来存放元方法的table 通过对应的key来得到value的值 作用就是修改一个值的行为 这种修改会覆盖原本该值可能存在的相应的预定义行为lua中的每个值都可以有一个元表 只是table和userdata可以有各自独立的元表 而其他类型的值共享其类型所属的单一元表lua代码只能设置table的元表 其他类型值的元表只能通过C代码设置多个table可...原创 2019-03-28 10:59:47 · 943 阅读 · 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 · 9638 阅读 · 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 · 8910 阅读 · 3 评论 -
lua编写模块
编写模块注意的地方:1.模块名必须与文件名相同2.创建局部表来封装模块 达到私有性 共有性3.将局部表赋给模块名后 摆脱函数对模块名的依赖 这样改变模块名只需改变文件名即可4.利用环境解决 函数和变量依赖局部表名的调用5.利用环境会造成当前环境不能访问外部的全局变量 可以通过设置元表 让当前全局变量_G继承外部的_G方法一创建一个table 并将所有需要导...原创 2019-03-23 16:20:41 · 390 阅读 · 0 评论 -
lua中require、dofile、loadfile对比
一、requirerequire(moduleName):用来加载模块;其参数只要是文件名即可;利用模式匹配搜索加载文件;require只会被调用执行一次,会判断文件是否被加载避免重复加载;(1)模式匹配require的路径是一个模式列表,每一个模式指明一种由虚文件名(require的参数)转成实文件名的方法;每一个模式是一个包含可选的问号的文件名。匹配的时候Lua会首先将问号用虚文...原创 2019-03-23 16:20:00 · 494 阅读 · 0 评论 -
Lua继承的实现
实现继承的原理:利用table中的元表来实现 __index__index元方法:用于查看表中元素或方法是否存在 如果不存在则返回nil 如果存在 则返回__idnex表中的结果--单一继承的实现 利用元表来实现继承Account = {name = "lili", balance = 10}function Account:widthdraw(value) self.balanc...原创 2019-03-29 11:14:42 · 1189 阅读 · 0 评论