
Lua
lua笔记
谢永奇1
这个作者很懒,什么都没留下…
展开
-
Lua实现简单的伪随机红包算法
今天刚好用Lua实现了一个伪随机红包,可能可能随机的值并没有太好,如果有更好的想法可以评论说出来大家讨论一下;这个随机红包的的要求是给一个指定的数额,和一个最大领取金额和最小领取金额,然后指定给多少个人随机领取;思路:(1)第一步:每次的随机数范围通过总金额 - (已被领取金额+剩下所有人的最低金额)进行计算后,放大倍数来拿到一个范围更大的随机数再除掉放大倍数(2)第二步:进行计算每个人能领取到的随机金额,然后若是没有分配到的将给一个最低值(3)第三步:若是剩下的金额还比领取的人数还多则先平均后,原创 2021-07-19 22:03:39 · 464 阅读 · 0 评论 -
Lua中的//含义(地板除 floor division)
关于Lua中的地板除是在项目中看到,由于比较少见,于是进行记录一下;Lua中使用//表示为地板除;它的效果其实和数学库中的math.floor()向下取整的效果是一样的,意思为:对一个数进行除法运算后向下取整print(9//2) --> 4print(math.floor(9/2)) --> 4并且两个语句执行的速度好像差不多,不过Lua的地板除在一些教程中都不怎么常见,于是去官网中看了一下;关于//地板除lua官网中是这样介绍的:Floor division () is a原创 2021-07-14 22:07:53 · 2553 阅读 · 1 评论 -
lua提示bad argument #1 to ‘for iterator‘ (table expected, got nil)
这个报错是因为在使用for迭代器时,传递给迭代器的参数不正确导致的例如下面的程序中就会报这个错local Set = {}function Set:tostring(set) local l = {} for e,k in pairs(set) do l[#l + 1] = e end return "{"..table.concat(l,",").."}"endfunction Set:print( s ) print(Set:tostring(s))endSet:prin原创 2021-06-19 10:47:52 · 12890 阅读 · 0 评论 -
Lua具有复杂状态的迭代器(多状态迭代器)
具有复杂状态的迭代器: 通常,迭代器需要许多状态,但是在泛型for中只提供三种值的保存,其中是两个是用于状态的保存:①恒定状态,②控制变量;所以当我们想要使用迭代器保存更多状态时我们可以使用closure或者使用一个table来进行打包;这样一个迭代器就可以通过这个table保存任意多的数据了,并且它还可以在循环过程中改变这些数据;下面是一个实现读取文件中每一行单词的具有复杂状态的迭代器--打开文件往里面写入数据file = io.open("./text.txt","w+")file:write原创 2021-05-24 21:01:04 · 404 阅读 · 0 评论 -
Lua的无状态迭代器
无状态迭代器:即在使用迭代器时其本身不会保存任何状态的值或者变量;但是其实在每次迭代中,for循环也依旧会保存着三个变量:迭代器函数、恒定状态和控制变量;但是就不会像上面的closure闭包函数一样会拥有着一个“非局部变量(upvalue)”,这个"非局部变量"就是迭代器的一个状态值;因此无状态迭代器其实就可以节省了创建closure的开销了(实际就是创建upvalue的开销);最典型的无状态迭代器例子就是ipairs函数,ipairs函数可用于迭代一个数组的所有元素-- 无状态迭代器函数functi原创 2021-05-24 20:51:20 · 415 阅读 · 0 评论 -
Lua中的table.与table[]的使用
在Lua中有两种方式可以索引到table中的值,分别是.和[];这两种方法都可以直接索引到表里面的值,但是还是有一些区别的,往下看进行分析若当前有一个表tb,表的格式如下tb = {["x"]=1,["y"]=2}一、使用table.进行索引,这种是表示使用字符串x作为索引tb表里面的值;这是一般情况下的索引方式print(tb.x,tb.y)--此时 tb.x == tb["x"]-- tb.y == tb["y"]二、使用table[]进行索引,这种是表示使用一个参数进行索引原创 2021-05-20 11:44:27 · 2622 阅读 · 1 评论 -
一篇文章理解Lua面向对象
Lua的类个人觉得Lua并不能算是一门面向对象的语言;因为Lua它是定位于开发中小型程序,往往不会用于编写大型程序;下面这是一个Lua中的一个简单的类的实现local a = {name="lisi"}function a:new( o ) o = o or {} setmetatable(o,self) self.__index = self return oendfunction a:MyPrint( ) print(self.name)endlocal tb =原创 2021-05-12 11:47:30 · 2280 阅读 · 0 评论 -
sublime text3 提示[WinError 2] 系统找不到指定的文件
目录一、编译文件不正确二、系统文件变量没设置好1、打开我的电脑,然后右键打开选项;点击进入属性2、进入环境变量3、进入系统环境变量的Path环境变量进行编辑4、往Path环境变量添加对应的路径5、退出确认6、重启sublime text软件在使用sublime text3搭建Lua环境时遇到了这个问题,发现了下面这个错误信息说找不到指定的文件,然后发现是环境变量所导致找不到指定的编译文件去编译运行主要的原因有两个:一、编译文件不正确例如我这里下载的是lua 5.4版本的编译器,由于下载后的编译文件原创 2021-05-04 01:12:12 · 15633 阅读 · 3 评论 -
lua的select函数理解
目录一、用计算传递进来的参数个数二、输出第n个索引后的所有参数关于lua的select函数,是可以用于计算参数个数的或者获取指定索引之后的参数;当select函数用于计算传递进来的参数个数时需要在第一个参数位置使用#符号;否则就需要使用数字n来进行获取某个指定索引后的参数;我看这部分教程时发现很多都是把select(n,...)这个函数说是返回指定索引的参数,但是实际操作中返回的是第n个索引后的所有参数;下面是两种用法的操作分析一、用计算传递进来的参数个数在普通函数上使用的select这是计算传递进原创 2021-04-30 14:37:30 · 3734 阅读 · 2 评论