![](https://img-blog.csdnimg.cn/b3731c2254b1423da5ecafbf7c59341f.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Lua
lua
小林同学的博客
初出茅庐的Developer
展开
-
Lua String以及String库总结
最近一直使用到string,因此干脆对lua字符串的用法进行系统性的梳理。原创 2022-08-28 21:01:25 · 1532 阅读 · 0 评论 -
lua 判空的坑
lua判空原创 2022-08-21 13:56:22 · 242 阅读 · 0 评论 -
lua解释器程序
-estat execute string ‘stat’ 直接在命令行输入代码 并执行-lname require library ‘name’ 加载库文件 并运行-ienter interactive mode after executing ‘script’ 进入交互模式(默认)退出- -arglua程序参数列表...原创 2021-10-10 18:28:50 · 300 阅读 · 0 评论 -
Lua虚拟机
一、脚本语言脚本语言通常是解释执行的,每一门脚本语言都会有自己定义的OpCode(Operation Code,也称为bytecode,一般翻译为“操作码”或者“字节码”),这些字节码是由脚本语言经过编译器前端处理之后,生成的,再将它放到这门语言的虚拟机中逐个执行。而像C这样的都是直接编译器编译之后生成与当前硬件环境相匹配的汇编代码,不经过虚拟机,可以直接为机器识别脚本语言这样做得好处1、可运行平台 比较广,对接的是虚拟机,由虚拟机去处理硬件和软件平台的差异2、由于脚本语言需要由虚拟机执行,中间原创 2021-10-02 16:10:08 · 1616 阅读 · 0 评论 -
Lua 面向对象--封装
面向对象特征1、 封装:指能够把一个实体的信息、功能、响应都装入一个单独的对象中的特性。2、继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,而新功能也得以扩展。这有利于减少重复编码,提高软件的开发效率。3、多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。4、抽象:抽象(Abstraction)是简化复杂的现实问题的途径,它可以为具体问题找到最恰当的类定义,并且可以在最恰当的继承级别解释原创 2021-07-23 15:00:43 · 437 阅读 · 0 评论 -
lua 元表
设置原表--元表 -- 任何表变量都可以作为另一个表变量的元表 -- 任何表变量都可以有自己的元表(父) -- 当子表(有元表的这张表)进行一些特定的操作时 -- 会执行元表的内容--设置元表 -- 先声明两张表-- meta = {}-- myTable = {}-- 设置元表函数-- 第一个参数 子表-- 第二个参数 元表(爸爸)--setmetatable(myTable,meta)特定操作 __tostring-- 特定操作 __tostringmeta2={ -原创 2021-07-22 17:57:57 · 222 阅读 · 1 评论 -
Lua协同程序(协程)
协程的创建--协同程序(协程)--协程的创建--常用方法--通过coroutine.create()fun = function() print(666) endco = coroutine.create(fun)print(co)print(type(co))--类型线程--第二种方法--coroutine.wrap()co2= coroutine.wrap(fun)print(co2)print(type(co2))--创建出来的不是线程类型而是函数thread原创 2021-07-22 11:21:50 · 833 阅读 · 0 评论 -
Lua 垃圾回收
test = {id = 1,name = '666'}--垃圾回收关键字 collectgarbage--获取当前lua占用内存字节数 K字节 用返回值*1024 就可以得到具体的内存占用字节数print(collectgarbage('count'))print(collectgarbage('count')*1024)--进行垃圾回收--lua中的垃圾回收 理解有点像C#中的 GC --当test为空时 解除羁绊 变成垃圾test = nil--进行垃圾回收 理解有点像C#的GC原创 2021-07-21 15:07:46 · 149 阅读 · 0 评论 -
Lua 自带库
时间相关系统时间--时间相关 -- 获取系统时间(时间戳) print(os.time())获得一个时间戳 -- 跟上那个相反,把我们现在的时间弄成时间戳 print(os.time({year = 2021,month = 7 ,day =21}))*os.date('t’) --os.date('*t') local time = os.date('*t') for k,v in pairs(time) do print(k,v) end原创 2021-07-21 14:41:56 · 295 阅读 · 0 评论 -
lua 特殊用法(多变量赋值、函数多返回值、and or[短路])
多变量赋值--多变量赋值a,b,c='123',666,trueprint(a)print(b)print(c)这语言是真的骚,全自动赋值变量少了,自动补空--全自动赋值--变量少了,自动补空t1,t2,t3=1,2print(t1)print(t2)print(t3)--变量多了,自动裁剪t1,t2,t3=1,2,6,7,8print(t1)print(t2)print(t3)函数多返回值--多返回值赋值function Test() return原创 2021-07-20 11:51:59 · 715 阅读 · 0 评论 -
lua 多脚本执行
1、全局变量和本地变量全局变量--多脚本执行--全局变量和本地变量--全局变量--全采用全局变量其实挺浪费内存的--像下面这些全是全局变量a=1b='123'--for循环内声明的变量在C#中是局部变量,在lua中是全局变量for i=1,1 do c='lucky'endprint(c)局部(本地)变量--关键字 local for i=1,1 do local d='execution'endprint(d)这样在for循环外我们就获取不到局部变量的值原创 2021-07-20 10:54:06 · 538 阅读 · 0 评论 -
Lua 表的公共操作
插入t1={{name="张三",age = '23'},{name='李四',age='25'}}t2={name ='牛二',sex=false}print('t1长度:'..#t1)--插入table.insert(t1,t2)print('t1插入后长度:'..#t1)我们遍历一下for k,v in pairs(t1) do print(k,v)end它打印出来是它的类型table,后面是它的地址。三个不同的地址对应的就是它不同的三张表我们想看看表内的东西,就把属原创 2021-07-19 19:45:08 · 156 阅读 · 0 评论 -
Lua 类和结构体
Lua中默认是没有面向对象的,需要靠我们自己实现成员变量 成员函数Student = { age = 18, sex = true, Up = function () print('长大了') end}Lua中类的表现更像是一个类中包含有很多的静态变量和函数print(Student.age)Student.Up()在声明表后,可以在表外去声明表有的变量和方法表内是没有name这个属性的,我们在表外给它添加了Student.name= '少年'--表外加函数有两种写原创 2021-07-19 17:54:51 · 4000 阅读 · 1 评论 -
Lua Table表实现字典
字典字典的声明字典使用键值对构成访问单个变量 用中括号填键来访问a={["name"]='小可爱',['age']=18,["6"]=6}print(a['name'])print(a['age'])print(a['6'])可以通过.成员变量的形式得到值print(a.name)print(a.age)修改a["name"]='丑八怪'print(a.name)print(a['name'])新增a['sex']='woman'print(原创 2021-07-19 15:27:02 · 765 阅读 · 1 评论 -
Lua 迭代器遍历
迭代器遍历主要用来遍历表#获取长度其实并不准确,一般不要使用#来遍历表(除非你很确定这里面的元素都是不间断,中间也没有为空的情况)ipairs迭代器遍历ipairs遍历还是从1开始遍历的,小于或等于0的不遍历--ipairs--先搞一个自定义索引a = {[0]=1,2,[-1]=3,6}for i,k in ipairs(a) do print("ipairs遍历"..i..'_'..k)endpairs迭代器遍历pairs可以遍历所以信息,建议使用其遍历各种不规则的表原创 2021-07-19 14:44:16 · 273 阅读 · 0 评论 -
lua table表实现数组
1、复杂数据类型 table在lua中表示一切复杂数据的基础:数组、二维数组、字典、类等直接输出会输出-- 所有复杂类型都是table(表)a={1,2,'123',true,nil}--lua中 索引从1开始print(a[0])--报nilprint(a[1])print(a[2])print(a[3])print(a[4])--打印数组长度--#是通用的获取长度的关键字print(#a)注意2、数组的遍历--数组遍历q={1,2,'6'}for i=1,原创 2021-07-16 16:07:29 · 1284 阅读 · 1 评论 -
Lua 函数
1、概念在Lua中,函数是对语句和表达式进行抽象的主要方法。既可以用来处理一些特殊的工作,也可以用来计算一些值。Lua 提供了许多的内建函数,你可以很方便的在程序中调用它们,如print()函数可以将传入的参数打印在控制台上。Lua 函数主要有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。 基本写法function 函数名()end还有一种特殊写法a(变量)=function()end我感觉像lua这种随原创 2021-07-16 11:20:51 · 481 阅读 · 0 评论 -
Lua循环
while-- 循环语句--***while**num=0--while 条件 do...endwhile num <5 do print(num) num = num +1enddo while---do while 语句 --repeat...until 条件(注意条件是结束条件) num=0 repeat print(num) num = num+1 until num >5 --满足条件 结束条件for循环--for循环--i=2,打印.原创 2021-07-16 09:35:52 · 197 阅读 · 0 评论 -
Lua 条件分支语句
--条件分支语句--if条件 then....end--单分支a=6if a>5 then print('666')end--双分支a=7if a>8 then print(true)else print(false)end--多分支a=88if a>60 and a<=70 then print('及格') elseif a>70 and a<=80 then --注意在lua中else if需要合在一起写 print('良好.原创 2021-07-15 17:37:00 · 313 阅读 · 0 评论 -
Lua 运算符
1、算数运算符-- 算数运算符-- + - * / %-- 跟C#不同,Lua没有自增自减运算符 ++ ----加法运算a=1b=1print(a+b);print('12'+1)--字符串可以进行算数运算符操作(Lua会直接把字符串转成数值进行运算)print('66.66'+1.27)print(1+1)后面的常用运算我都写一起了记住lua没有自增自减符2、条件运算符--条件运算符print(3>1)print(3<1)print(3>=1)原创 2021-07-15 17:18:44 · 1372 阅读 · 1 评论 -
Lua 字符串操作
1、获取字符串长度--获取字符串长度s='abcd'd="杭州"--一个汉字占3个长度--一个英文字符占1个长度print(#s)print(#d)2、转义字符--lua支持转义字符--实现多行打印print('小妹妹\n好漂亮')实现多行打印还可以使用s=[[我们是穿梭在银河的火箭队喵]]print(s)3、字符串拼接1、第一种不管啥类型用都可以拼在一起--字符串拼接通过..s1 = 123s2 = '666'print(s1..s2)原创 2021-07-15 14:06:46 · 3210 阅读 · 0 评论 -
Lua 变量和注释
1、注释1.1 多行注释--[[多行注释]]--[[多行注释--]]--[[多行注释]]--1.2 单行注释--单行注释lua语法可以省略分号2、变量2.1 简单变量类型lua当中的简单变量类型nilnumberstringbooleannil-- nil 有点类似于C#中的nulla=nilprint(a)number--number 所有的数值都是numbera=1print(a)a=1.2print(a)s原创 2021-07-15 10:41:52 · 346 阅读 · 0 评论 -
Lua 环境搭建
点开github页面后,往下滑到下载下载完并安装好后,去控制台输入lua,出现版本号就是安装好了原创 2021-07-15 09:42:13 · 149 阅读 · 0 评论