- 按键认证导师
- 513852
- 3624
- 47
- 4633 朵
- 28052 个
- 6157 个
- 190000
- 2010-10-09
|
1#
t
T
发表于 2022-02-27 17:43
|
|只看楼主
Lua自带函数命令 在前面课程我们已经对Lua语法做了详细讲解,这里介绍下Lua中的自带函数命令,类似于按键精灵中的Chr()、Instr()等自带命令。 篇幅有限,这里仅举几个典型函数命令例子,更多命令请翻阅Lua 5.3 参考手册,需注意,这是Lua5.3版的文档,而按键精灵是基于Lua5.2版,故有个别命令可能无法使用,具体请自行测试。
print 大家请在上面参考手册的链接中找到基础命令下的print命令。
print (···) 接收任意数量的参数,并将它们的值打印到 stdout。 它用 tostring 函数将每个参数都转换为字符串。 print 不用于做格式化输出。仅作为看一下某个值的快捷方式。 多用于调试。 完整的对输出的控制,请使用 string.format 以及 io.write。 |
以上是文档里的命令介绍,我们对此展开讲解。 第一句print (···)是这个命令的语法与参数介绍,由于他是基础命令,所以没有在某个库下,直接写print()即可调用这个命令。括号里的3个点(...)代表任意数量的参数。 接下来是这个命令的使用说明。 接收任意数量的参数,并将它们的值打印到 stdout。这句话表名这个命令功能是打印输出功能,类似于按键精灵的TracePrint。 它用 tostring 函数将每个参数都转换为字符串。表示它会把所有传入的参数都经过tostring()转换成字符串进行打印输出。 后面的介绍作为一个补充说明,告知它没有格式化功能,更加强大的需要自己完善。下面我们写几个简单例子:- a = 1
- print(a) -- 打印输出变量a的值,等同于按键精灵的TracePrint a
- b = 2
- print(a, b) -- 打印输出两个变量值,等同于按键精灵的TracePrint a, b
复制代码
string.find 大家请在上面参考手册的链接中找到字符串命令下的string.find命令。
string.find (s, pattern [, init [, plain]]) 查找第一个字符串 s 中匹配到的 pattern (参见 §6.4.1)。 如果找到一个匹配,find 会返回 s 中关于它起始及终点位置的索引; 否则,返回 nil。 第三个可选数字参数 init 指明从哪里开始搜索; 默认值为 1 ,同时可以是负值。 第四个可选参数 plain 为 true 时, 关闭模式匹配机制。 此时函数仅做直接的 “查找子串”的操作, 而 pattern 中没有字符被看作魔法字符。 注意,如果给定了 plain ,就必须写上 init 。
如果在模式中定义了捕获,捕获到的若干值也会在两个索引之后返回。 |
以上是文档里的命令介绍,我们对此展开讲解。 第一句string.find (s, pattern [, init [, plain]])是该命令的语法和参数介绍,string是字符串库,find是这个库下的一个命令,类似于我们在定义了一个table数据,然后把一个函数丢进去。括号里的s, pattern [, init [, plain]]是参数内容,第1个参数是s,第2个参数是pattern,第3和第4个分别是init和plain,参数中的中括号[]代表可选参数,也就是init和plain这两个参数可以被省略。但是请注意,这是文档中的描述语法,并非表示你实际代码也要写中括号! 第二句开始属于对该命令的详细介绍。 查找第一个字符串 s 中匹配到的 pattern 。这句告知我们命令功能是查找字符串内容,第1个参数s是待查找原字符串,第2个参数pattern是用于查找的字符串内容。例如想要在abcdef这个字符串中查找字母c,那么abcdef就是第1个参数s,c就是第2个参数pattern。 如果找到一个匹配,find 会返回 s 中关于它起始及终点位置的索引; 否则,返回 nil。这句告知我们查找成功返回两个数据,分别是找到字符串的开始位置和结束位置,如果没找到那么就返回nil。 第三个可选数字参数 init 指明从哪里开始搜索; 默认值为 1 ,同时可以是负值。这句告知参数3属于可选参数,代表从第几个位置开始查找字符串,省略不写情况下默认为1,负值未告知作用,但是可以由正值是左往右第几位推断出负值应该就是右往左第几位,具体到时候写段代码测试即可得知。 第四个可选参数 plain 为 true 时, 关闭模式匹配机制。 此时函数仅做直接的 “查找子串”的操作, 而 pattern 中没有字符被看作魔法字符。 注意,如果给定了 plain ,就必须写上 init 。这句告知参数4也是可选参数,它的作用是开启或关闭模式匹配,一般情况下,布尔型的参数默认值都是false。 经过上面的分析,我们对string.find()命令已经有所了解。下面我们写几个简单例子:- s = "zimaoxy.com"
- i, j = string.find(s, "mao") --在字符串变量s中查找mao
- print(i, j) -- 输出3, 5, 因为找到mao在原字符串中是从第3个位置开始到第5个位置结束
- i = string.find(s, "mao", 5) --在字符串变量s中从第5个位置开始查找mao
- print(i) -- 输出nil, 因为从第5个位置开始已经找不到mao这3个字母了
- i = string.find(s, ".") --在字符串变量s中查找模式匹配符号.
- print(i) -- 输出1, 因为在模式匹配中的.符号表示任意字符
- i = string.find(s, ".", 1, true) --在字符串变量s中查找原符号.
- print(i) -- 输出8, 因为填写了参数4关闭模式匹配, 所以只查找原符号.
复制代码
总结 以上仅对这两个命令文档做一些解读,大家可以跟着这样的思路,去尝试更多命令的理解,使用类似于https://chenxuuu.gitee.io/lua-online/这种在线调试lua代码的平台进行运行测试。
|