Lua 规范
快速上手

快速上手

RHILEX 使用了 Lua 虚拟机作为规则执行引擎,可以很方便的扩展 RHILEX 的功能。目前支持的函数以及其示例均包含在该站点,方便用户查阅使用。

💡

RHILEX 在 2 个地方使用了 Lua,第一个场景是数据处理,主要用在设备上面,称之为规则 Lua;另一处是独立的 Lua 脚本执行器,用来实现更加强大的业务逻辑,称之为应用开发 Lua,而此处主要讲解针对数据处理的场景。

提前准备

RHILEX Lua 使用标准标准 Lua 5.3,没有对 Lua 标准语法做任何修改,所以为了尽快掌握 RHILEX Lua 扩展,建议大家先提前学习标准 Lua 的语法,下面给出几个常用的学习网站。

⚠️

为了安全,RHILEX Lua 删除了 Lua 的原始 OSstring 模块。因此建议所有函数均使用 RHILEX Lua 提供的接口。

命名空间

RHILEX RULE 有专门的命名空间,参考下面的表格

命名空间功能示例
data数据处理data:ToUdp('uuid', data)
stdlib标准库stdlib:Debug("ok")
rpcRPC 调用rpc:Request('uuid', data)
binary二进制处理binary:ToUint(bin_data)
urlURL 处理url:Parse("https://www.hootrhino.com")
time时间处理time:Sleep(1000)
kv内部 KV 存储器kv:VSet("k","v")
jsonJSON 编解码json:T2J(name = "name")
rule规则辅助rule:SelfId()
device设备交互device:Read(data)
string字符串处理string:SubStr("12345",0,1)
hex十六进制处理hex:ABCD(data)
aibaseAI 接口aibase:Infer(data)
math数学库math:pow(1,1)
⚠️

上面给出的列表可能会随着版本改变而变动,需要及时获取和关注社区最新通知。

RHILEX Actions

RHILEX Lua 包含 1 个回调: Actions,本身是 Lua 的一个 Table 结构,其元素为 function(arg) 列表,如下所示:

Lua
Actions =
{
    function(data)
        return true, data
    end
}

需要注意的是 Actions 是个函数列表,可以实现链式回调,所以 Actions 可以这么写:

Lua
Actions =
{
    function(data)
        return true, data
    end,
    function(data)
        return true, data
    end,
    function(data)
        return true, data
    end
}

上面的例子包含了 3 个处理流程,会顺序执行,将上一个函数的执行结果交给下一个的参数,其中 return 的第一个值表示是否向下传递。如果是 false 则短路直接返回。

十分钟学 Lua

Lua 是一种轻量级的脚本语言,广泛用于游戏开发、嵌入式设备和其他各种应用程序中。本教程将带你快速了解 Lua 的基础语法库,让你在 30 分钟内入门 Lua 编程。

注释

在 Lua 中,你可以使用 -- 来进行单行注释,也可以使用 --[[ ]]-- 来进行多行注释。

Lua
-- 这是单行注释
 
--[[
这是
多行
注释
--]]

变量和数据类型

Lua 中的变量无需显式声明类型,直接赋值即可创建变量。Lua 有 8 种基本数据类型:nil、boolean、number、string、userdata、function、thread、table。

Lua
-- 定义变量并赋值
local num = 10
local str = "Hello, Lua!"
local flag = true
 
-- 输出变量
print(num)
print(str)
print(flag)

控制流程

1. 条件语句

Lua 使用 if-elseif-else 结构来实现条件判断。

Lua
local num = 10
 
if num > 0 then
    print("num是正数")
elseif num < 0 then
    print("num是负数")
else
    print("num是零")
end

2. 循环语句

Lua 提供了 while 循环和 for 循环。

Lua
-- while循环
local i = 1
while i <= 5 do
    print(i)
    i = i + 1
end
 
-- for循环
for j = 1, 5 do
    print(j)
end

函数

在 Lua 中,函数是第一类值,可以存储在变量中,也可以作为参数传递给其他函数。

Lua
-- 定义函数
function add(a, b)
    return a + b
end
 
-- 调用函数
local result = add(3, 5)
print(result) -- 输出 8

表(Table)

表是 Lua 中的一种复合数据类型,可以用来表示数组、字典等数据结构。

Lua
-- 创建表
local student = {
    name = "Alice",
    age = 20,
    grade = "A"
}
 
-- 访问表中的元素
print(student.name)  -- 输出 Alice
print(student.age)   -- 输出 20
print(student.grade) -- 输出 A

字符串操作

Lua 提供了丰富的字符串操作函数,如字符串连接、查找、替换等。

Lua
local str1 = "Hello"
local str2 = "Lua"
 
-- 字符串连接
local result = str1 .. ", " .. str2
print(result) -- 输出 Hello, Lua
 
-- 字符串长度
print(#str1) -- 输出 5
 
-- 查找子串
local index = string.find(result, "Lua")
print(index) -- 输出 8

这就是 Lua 的基础语法库。通过本教程,你应该对 Lua 的基本语法有了初步的了解。继续学习更多高级特性和应用场景,你将能够更灵活地运用 Lua 进行编程。

在线 Lua 模拟环境

© 2023-2025 RHILEX Technologies Inc. All rights reserved.