• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[紫猫] [按键手机插件开发]05. Lua自带函数命令语法与例子 ---- 围观城... [复制链接]

1#
本系列教程目的是让大家掌握Lua基本语法与按键精灵手机版的插件开发制作,丰富按键精灵生态环境,让按键精灵变得更加强大!
本教程中部分知识点参考《Lua程序设计》书籍,有兴趣可以自行购买→传送门
按键精灵手机版插件的开发标准草案请阅读帖子:http://bbs.anjian.com/showtopic-697779-1.aspx
紫猫学院也有提供Lua插件开发的VIP教学服务,有兴趣请咨询紫猫老师QQ345911220或微信zimaoxy

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()转换成字符串进行打印输出。
后面的介绍作为一个补充说明,告知它没有格式化功能,更加强大的需要自己完善。下面我们写几个简单例子:
  1. a = 1
  2. print(a) -- 打印输出变量a的值,等同于按键精灵的TracePrint a
  3. b = 2
  4. 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个分别是initplain,参数中的中括号[]代表可选参数,也就是initplain这两个参数可以被省略。但是请注意,这是文档中的描述语法,并非表示你实际代码也要写中括号!
第二句开始属于对该命令的详细介绍。
查找第一个字符串 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()命令已经有所了解。下面我们写几个简单例子:
  1. s = "zimaoxy.com"
  2. i, j = string.find(s, "mao") --在字符串变量s中查找mao
  3. print(i, j) -- 输出3, 5, 因为找到mao在原字符串中是从第3个位置开始到第5个位置结束

  4. i = string.find(s, "mao", 5) --在字符串变量s中从第5个位置开始查找mao
  5. print(i) -- 输出nil, 因为从第5个位置开始已经找不到mao这3个字母了

  6. i = string.find(s, ".") --在字符串变量s中查找模式匹配符号.
  7. print(i) -- 输出1, 因为在模式匹配中的.符号表示任意字符

  8. i = string.find(s, ".", 1, true) --在字符串变量s中查找原符号.
  9. print(i) -- 输出8, 因为填写了参数4关闭模式匹配, 所以只查找原符号.
复制代码


总结
以上仅对这两个命令文档做一些解读,大家可以跟着这样的思路,去尝试更多命令的理解,使用类似于https://chenxuuu.gitee.io/lua-online/这种在线调试lua代码的平台进行运行测试。


【紫猫编程学院】火热招生中

教学涉及按键精灵(电脑版与手机版)、网页、游戏、办公、插件等。

报名咨询QQ: 345911220 微信:zimaoxy

紫猫学院免费教程

加入交流QQ群: 7333555


2#

不太值得研究,一个连截图命令都没有的语言

发新话题 回复该主题