• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-11-13 15:26 Aet 隐藏边栏 |   抢沙发  1 
文章评分 1 次,平均分 5.0

补充知识

局部变量&&代码块

lua语言中的变量在默认的情况下是全局变量,所有的局部变量在使用前必须申明。

控制结构

lua语言中所有不是falsenil的值当作真(0和空字符串也是真)

闭包

第一类值

一个程序可以将某个函数保存到变量中(全局变量或局部变量中),也可以保存在表中,也可以将某个函数作为参数传递给其他函数,还可以将某个函数作为其他函数的返回值返回。

词法定界

lua语言中的函数可以访问包含其自身的外部函数中的变量

函数是第一类值

lua语言中,所有的函数都是匿名的。
当讨论函数print时,实际上指的是保存该函数的变量。

非全局函数

函数是一种”第一类值“,它不仅可以被存在全局变量中,还可以被存在局部变量中。

词法定界

当编写一个被其他函数B包含的函数A时,被包含的函数A可以访问包含其的函数B的所有局部变量,我们将这种特性称为词法定界。

模式匹配

find

string.find用于在指定的目标字符串中搜索指定的模式。
它在找到一个模式后,会返回两个值:匹配到模式的开始位置和结束位置的索引;如果没有找到任何匹配,则返回nil

find返回的结果可用于string.sub来获取目标字符串中相应模式的子串。

可选参数:

  • 3:索引,表从目标字符串的哪个位置开始搜索
  • 4:bool,是否进行简单搜索(忽略模式,单纯地在目标字符串中搜索子串)

match

string.match用于一个字符串中搜索模式。
返回的是目标字符串中与模式相匹配的那部分子串。

gsub

string.gsub是将目标字符串中所有出现模式的地方换成替换字符串

  • 1:目标字符串
  • 2:模式
  • 3:替换字符串

gmatch

string.gmatch返回一个函数,通过返回的函数可以遍历一个字符串中所有出现的指定模式

模式

lua语言中的模式使用%作为转义符

. 任意字符
%a 字母
%c 控制字符
%d 数字
%g 除空格外的可打印字符
%l 小写字母
%p 标点符号
%s 空白字符
%u 大写字母
%w 字母和数字
%x 十六进制数字

修饰符

  • +
    • 重复一次或多次
  • *
    • 重复零次或多次
  • -
    • 重复零次或多次(最小匹配)
  • ?
    • 可选(出现零次或一次)

捕获

允许根据一个模式从目标字符串中抽出与该模式匹配的内容来用于后续用途,可以通过把模式中需要捕获的部分放到一对圆括号内来指定捕获

替换

string.gsub第三个参数不仅可以是字符串,还可以是函数或表。

当第三个参数是函数时,string.gsub会在每次找到匹配时调用该函数,参数是捕获到的内容而返回值则被作为替换字符串。

当第三个参数是一个表时,string.gsub会把第一个捕获到的内容作为键,然后将表中对应该键的值作为替换字符串。

如果函数的返回值为nil或者表中不包含这个键或者表中键的对应值为nil,那么函数gsub不改变这个匹配。

日期和时间

lua语言的标准库提供了两个用于操作日期和时间的函数。

time

不带任何参数调用函数os.time,会以数字形式返回当前的日期和时间

date

函数os.date在一定程度上是函数os.time的反函数,它可以将一个表示日期和时间的数字转换为某些高级的表示形式,要么是日期表要么是字符串。

位和字节

所有的位运算都针对构成一个整型数的所有位。

位运算符

  • 按位与:&
  • 按位或:
  • 异或:~
  • 右移:>>
  • 左移:<<
  • 按位取反:~

二进制数据

string.pack会把值“打包”为二进制字符串,而string.unpack则从字符串中提取这些值。

二进制文件

io.inputio.output总是以文本方式打开文件。在POSIX操作系统中,二进制文件和文本文件是没有差别的。然而,在其他一些如windows的操作系统中,必须用特殊方式打开二进制文件。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享