Lua每日喝粥Lua进阶教程学习笔记

Require

require可以访问在其他文件中的全局变量或者全局函数。如果在其他文件夹下面则要加上文件夹名的路径。不需要加.lua的后缀,因为lua中会自动匹配。

 

但是无论require几次都只会访问一次。如下,只运行一次加法。

可以在package,path中添加路径

 lua中用require实现库的调用

迭代器

在lua的table中,数字下标的table可以直接for循环对数组下标进行迭代

 纯数字下标且连续的table 可以用ipairs()对table进行迭代遍历,其效果与for循环完全相同。

但是当数字下标不连续时,迭代器读到nil便会停止遍历。

 

 

 面对字符串下标的,可以用pairs()对table中所有类型的下标进行遍历。会将所有的下标全部迭代出来(注意下面代码块与上面ipars的区别

 

 

 pairs迭代器中是用next函数实现,next函数效果如下(如果table为空,next会打出nil,可以用来检查table是否为空。)

 

 字符串

 在lua中字符串中是一个字节一个字节存储,每个字节存储的是一串数字(ascll码)。可以存储任何byte值,能存0且不会丢失。

 字符串中有序号,从1开始

如下,对字符串第一个byte打出(1,表示下位1),结果为49,即0x31。右边为语法糖表示

 

也可以用byte打印出字符 

如下证明了字符串中能存取任何数字

 

 lower能把大写字母打印成小写,但打印是一个副本,即不会影响原始变量

 

 sring.find 可以找到模板字符串在变量字符串中的位置,并返回模板在字符串中的起始位置(索引)

 string.match则在字符串中返回模板

 

 正则匹配

可以用一些符号在字符串中或某一位置后搜寻特定的字符,每种字符由特定的符号表示

如下%d表示搜寻数字

 

 比如搜寻d带上后面两个数字

 

 可以用[]中选取多种可选匹配,如下

d后面可以匹配一个数字或字母

括号的使用

 

gsub可以用做替换。

 

 gmatch可以做迭代器,输出所有模板

 

协程

lua支持协程(实际上并不是多线程,而是分时复用),被赋值为协程的变量为thread类型,创建一个协程如下。

 不会直接执行,需要用resume来启用,resume可以开始一个协程,也能继续一个协程,yield则可以暂停一个协程,并返回一个值

 lua协程有状态,还没开始或者用yield暂停状态为“suspended”,正在运行则为“running”,调用其他协程暂时挂起为“normal”,结束则为“dead”,一个协程dead则不能再调用。

 

 

猜你喜欢

转载自blog.csdn.net/qq_53211468/article/details/125154147
今日推荐