Lua
cai.Jh
这个作者很懒,什么都没留下…
展开
-
Lua--初学--垃圾回收
Lua垃圾回收的关键字:collectgarbage("")常用的参数为:count–查看当前lua脚本运行时所占用的内存(得到的值要*1024)collect–回收当前的垃圾参数使用完之后,置空,就可以进行回收在进行热更新的时候,一般不选择自动的回收机制,而采用手动置空,然后回收的方式Demo:test={a,b}print(collectgarbage("count"))test=nilcollectgarbage("collect")print(collectgarbage("c原创 2020-11-04 14:53:03 · 127 阅读 · 0 评论 -
Lua--初学--new,inherit总结
1.基于元表进行使用原理:当设置了元表,并且设置了元表的__index,当前表没有的属性会根据__index指向的表进行寻找2.new的过程:返回一张空表,并且设置元表为调用new方法的表3.inherit的过程:往_G表(存储所有全局变量的表),写入一张表,并且设置元表为调用inherit--封装Object={}Object.posx=0Object.posy=0--new 实例化function Object:new( ) local obj={} setmetatable(原创 2020-11-03 16:35:24 · 491 阅读 · 0 评论 -
Lua--初学--inherit(className)的实现
1.原理运用元表,和元表的__index,与new不同的是,作为元表的子表,在直接写到_G表中作为全局表。本质上是有无写到_G表中,并且如果使用继承的形式,在声明一个实例,当没有给变量赋值的时候,根据__index的嵌套原理,访问的是父类中的属性(newClassInstance->通过元表__index=NewClass找到NewClass->NewClass通过元表__index=Object找到Object)。表现为作为实例化的表,用作变量使用,作为继承的表,当作声明表的变量使用O原创 2020-10-22 11:46:05 · 445 阅读 · 0 评论 -
Lua--初学--类的new()方法类似实现
1.原理:利用元表,这一个new方法中声明一个方法的本地表,作为元表的子表,并且返回出去,当一个变量利用赋值的时候,就会得到一个空表,并且继承了一个元表。并且对元表__index进行了赋值,所以在外部的调用的时候,看似调用的是返回出来的空表,实际上访问的还是元表中的内容。并且当对表进行变量的赋值的时候,相当于在子表中创建了一个新的变量,所以在第二次调用Test方法中的过程是:mytable 中没有Test变量,从元表中找到,并且把mytable作为变量传入->mytable中已经创建了id变量原创 2020-10-22 00:22:55 · 2739 阅读 · 0 评论 -
Lua--初学--元表
1.概念(父子表)任何表变量都可以作为另一个表变量的元表任何表变量都可以有自己的元表当在子表中进行一些特定操作的时候,会执行元表中的内容2.设置①声明两张表meta={}mytable={}②设置元表setmetatable(mytable,meta) arg1为子表,arg2为元表3.操作①__tostring:当子表要被当作字符串使用时,会默认调用 元表中的__tostring方法meta2={__tostring=function()return "onestring"原创 2020-10-14 17:39:02 · 174 阅读 · 0 评论 -
Lua--初学--协程
1.协同程序的概念:函数只运行一次,每一帧都要运行。Update,每帧都会重新调用2.协程的创建:①coroutine.createfun =function ()print(123)endco=coroutine.create(fun)print(type(co)) 输出thread②corountine.wrap()co2=coroutine.wrap(fun)print(type(co)) 输出function3.协程的运行:通过使用create创建的协程:corou原创 2020-10-09 14:06:13 · 188 阅读 · 0 评论 -
Lua--初学--多变量赋值,多返回值接取,and or的短路用法
1.多变量赋值格式a,b,c=1,2,"123"print(a,b,c)输出:1,2,“123”a,b,c=1,2print(a,b,c)输出:1,2,nil在给多变量赋值的时候,当值不够的时候,会自动给变量补空,当值过多的时候,会自动丢弃2.多返回值的接取function GetSomeValue() return 1,2,3enda,b,c=GetSomeValue()print(a,b,c)a,b=GetSomeValue()print(a,b)a,b,c,d=原创 2020-10-06 12:52:24 · 762 阅读 · 2 评论 -
Lua--初学--本地变量,全局变量,require
1.本地(局部)变量local value_name =value2.全局变量value_name=value3.区别①在循环中,循环体的变量,如果没有使用local关键字的话,能够在循环体外部使用变量for i=1,2 do b=2endprint(b)输出:2for i=1,2 do local b=2endprint(b)输出:nil②在function中,变量,如果没有使用local关键字的话,能够在方法的外部使用变量function testfunction(原创 2020-10-05 23:38:28 · 999 阅读 · 0 评论 -
Lua--初学--table常用的公共方法
1.table.insert(table1_name,table2_name) 将table2_name的值插入到table1_namet1={{name="123",age=1},{name="456",age=2}}t2={name="789",age=3}table.insert(t1,t2)2.table.remove(table_name,[index]),如果参数列表中没有index的时候,移除的是table中的最后一个元素,有index的时候移除的是table[index]的元素原创 2020-10-04 12:43:35 · 232 阅读 · 0 评论 -
Lua--初学--实现类
1.声明:Demo={value1=1,value2="value2",value3=true,functiondemo =function ( ) print("Demo中的一个方法")end,}2.调用:注意的是lua中没有new关键字,所以这里实现的类的效果,更像是静态类print(Demo.value1)print(Demo.value2)print(Demo.value3)Demo.functiondemo()3.添加新的字段,直接在外部使用.操作符输入要添加新的字原创 2020-10-03 17:46:51 · 373 阅读 · 0 评论 -
Lua--初学--key,value组成的表
1.形式:a={[key1]=value1,[key2]=value2,[key3]=value3,……}访问a[key1]a.key1 不能访问number或者"number"的key值2.当给已存在的a,添加新的key的时候a[“new_key”]=new_value3…要删除一个key,value时,把对应key值下的value置nil即可a[key]=nil4.遍历的时候,使用pairs遍历遍历的形式:①:for k,v in pairs(a) doprint(k,v)原创 2020-10-01 09:53:22 · 4261 阅读 · 0 评论 -
Lua--初学--遍历
value={…}1.遍历的形式:for循环,利用#获取长度的遍历for i,#value do print(value[i])endipairs遍历for i,v,ipairs(value) do print(i,v)endpairs遍历for k,v,pairs(value) do print(k,v)end2.因为数组使用的过程,会因为nil,或者自定义索引的原因导致数据没有办法完整的遍历出来value={[“第一个元素”]=1,[“第二个元素”]原创 2020-09-26 15:32:18 · 650 阅读 · 0 评论 -
Lua--初学--表定义
1.概述:表结构是所有复杂数据的基础:数组,二维数组,字典,类等等2.表的声明value={}----空表3.使用表来实现一维数组value={1,2,3,4,5,“123”,true,nil}在使用#,来获取value的长度的时候,会忽略掉队尾的nil注意:1.如果这里的nil在前面也会从nil开始进行忽略2.有些版本只会忽略队尾的nil,具体的根据编译结果进行判断4.数组遍历遍历的时候忽略情况,同获取长度的时候一样。遍历使用for循环for i=1,#a doprint(val原创 2020-09-24 02:03:18 · 689 阅读 · 0 评论 -
Lua--初学--function
1.函数的格式function function_name()end或者a=function()end函数声明之前,不能调用----与C#不同的是,C#在new的时候,就编译好了,就可以随时调用;lua要先声明,在调用从第二种可以看出,func是一种变量类型。有点类似与c#中的委托和事件的写法2.有参数的函数格式----多传了参数会丢弃,少传了参数会补空function function_name(arg) print(a)end注意arg是不指定变量类型的。注意的是,原创 2020-09-23 01:41:53 · 926 阅读 · 0 评论 -
Lua--初学--循环语句
1.while格式while 条件 do执行语句end2.repeat until格式repeat执行语句until 条件----满足条件跳出,结束条件,与C#不同的是 C#的Do while(进入条件)3.for 的格式:for i=1----循环变量,5----结束条件 do ----默认的给循环变量递增执行语句endfor i=1,5,2----循环变量递增的数量4.注意的点是①循环语句块使用do,来衔接②repeat until 条件, 其中的阿条件为退出条件③原创 2020-09-20 14:21:48 · 301 阅读 · 0 评论 -
Lua--初学--条件分支语句
1.格式:if 条件 then执行语句elseif 条件 then执行语句【else】【执行语句】end需要注意的点①条件 不用括号()②执行语句不用{} 而是使用then③elseif 中间不加空格在lua中没有switch语法,需要自己实现条件是和条件运算符和逻辑运算符混合使用print("条件分支语句的使用")--单条件判断a=9if a<=9 then print("a<=9")end--if else 使用if a<=8 then p原创 2020-09-20 13:46:15 · 321 阅读 · 0 评论 -
Lua--初学--string
1.字符串的长度获取----#+变量a="abcdefgSSS"print(#a)比较特殊的是:引文算一个长度,汉字算三个长度2.换行符a="abcde\nfghij"print(a)打印结果为abcdefghij和a=[[abcdefghif]]print(a)结果一样3.字符串的拼接…a="123"b="456"print(a..b)无论附上什么类型的值使用…之后返回的都是string类型的4.别的类型转换成字符串类型----tostringa=12原创 2020-09-17 13:29:27 · 88 阅读 · 0 评论