找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1094|回复: 0

[教程源码] [Lua插件开发]02. 数值、字符串、布尔、表、函数各大类型

[复制链接]
  • 打卡等级:行侠仗义

1080

主题

2101

回帖

4281

积分

院长

鲜花
6
猫粮
7395
QQ
发表于 2022-2-19 22:17:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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



调试代码
除了自己搭建Lua环境调试代码外,也可以直接用记事本或者vscode文本编辑器之类的软件,通过按键精灵手机助手直接调试插件,详见帖子https://zimaoxy.com/b/t-3297-1-1.html


数值:
数值型与按键精灵手机版中的类型一致,也是直接写变量名=数字,例如
[Lua] 纯文本查看 复制代码
local a = 10
local b = 20 * 2
local pi = 3.14



字符串:
字符串与按键精灵手机版中类型稍有不同,除了可以用双引号外(""),还可以单引号('')和长文本的中括号([[]]),例如
[Lua] 纯文本查看 复制代码
local a = "紫猫"
local b = '编程'
local c = "单引号与双引号没有区别,可能唯一区别就是双引号字符串里出现了单引号'是不需要转义处理的"
local d = '在单引号字符串中出现了双引号"也是不需要转义处理的'

local e = [[
这是一段换行内容
这里的数据都被保存到变量e中
包括这几个换行符
如果内容中也存在两个中括号之类的情况
那么可以给头尾中括号中间加一定数量的等号
例如都加一个等号即可解决这个冲突问题。
]]


字符串中的\表示转义符,例如\n是代表换行符,\"是代表一个双引号字符,\\代表一个斜杠字符,所以当你使用需要填写电脑路径时一定要注意转义!



布尔:
布尔与按键精灵手机版中类型稍有不同,在Lua中布尔值是两个小写的true和false,由于Lua是大小写敏感的,所以千万别手贱给首字母大写!其次要记住,在Lua中只有false与nil代表假,其他任何数据全部都是真,包括0与空字符串、空表等都是真。


表:
在Lua中表是最主要最强大的数据结构,它与按键精灵table类似,但是功能更加强大!详见下方代码例子
[Lua] 纯文本查看 复制代码
local t = {}  -- 这是定义了一个空表,里面没有任何数据
t["键名"] = "键值"  -- 这是按键精灵中的键值对写法,在Lua中也支持
t[1] = 345911220 -- 这是按键精灵中的表下标索引写法,在Lua中也支持
t.name = "紫猫" -- 这个是按键精灵不支持的写法,这行代码等同于下面一行
t["name"] = "紫猫" -- 这行代码与上一行相同,但是写法不同
t.add = function (a, b) return a + b end -- 这是按键精灵不支持的写法,实现将函数存入表中



函数:
function函数与按键类似,但是功能语法相差甚远,在Lua中函数定义语法格式有以下几种
[Lua] 纯文本查看 复制代码
f(123) --这一行代码的位置是错误的, Lua必须先执行定义函数, 然后才能调用

local function f(x) -- 定义了一个局部函数f
    print(x)   -- 实现了打印输出参数x功能
    return x   -- 结束函数并返回参数x
end

f(123) --在这里才能正常调用上面定义的函数f, 调用语法是返回值 = 函数名(参数)

local add = function (a, b) -- 将一个匿名函数赋值给局部变量add
    return a + b   -- 将参数a+b的结果作为返回值
end

result = add(10 + 20) -- 调用函数必须要写在定义函数下面


function函数支持多个返回值,语法格式如下
[Lua] 纯文本查看 复制代码
local function foo()
    return "a", "b", "c"
end

local x, y, z
x, y, z = foo() -- 调用函数后, 将3个结果依次赋值给变量x,y,z


参数可以使用三个小数点(...)来表示可变长参数,也就是无论填写几个参数,例子如下:
[Lua] 纯文本查看 复制代码
local function add(...) --定义add函数, 参数填写数字, 无论几个参数都可, 功能是求所有参数之和
    local sum = 0
    for _, v in ipairs{...} do --这部分代码暂不做解释, 以后再说
        sum = sum + v
    end
    return sum
end

add(1,2,3,4,5,6,7,8,9,10) -- 执行后函数返回值是55

楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-3-29 15:42

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表