#Lua
Lua 是一种轻量小巧的脚本语言,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。详情参阅Lua 教程
在LIMS系统中,无需进行lua环境的安装搭建,只需在编辑器(win系统推荐notepad++)中写好再粘贴到网页中即可,甚至可以直接在网页中直接编写。
无论有没有写过Lua的经历,都推荐通读下此文章,进阶中提到的,也是期望您全部理解
##基础
###注释
两个减号是单行注释:
--自定义脚本
###标示符
Lua 标示符用于定义一个变量。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后 加上0个或多个字母,下划线,数字(0到9)。
赋值是改变一个变量的值和改变表域的最基本的方法。
1
2
3 >a = "hello" .. "world"
>t.n = t.n + 1
>
LIMS中的自定义脚本只关注于几个结果:
预约自定义脚本只关注于
can_reserv
(boolean)
与err_msg
(string)
两个变量_
can_reserv
为true
时,当前用户操作(添加、编辑、删除)预约有效,当为false
时,操作无效,并提示err_msg
信息_Demo:
1
2
3--谁都不让约
can_resrv = false
err_msg = "不约不约,叔叔我们不约"计费自定义脚本只关注于
fee
(number)
与description
(string)
两个变量fee
为此次计费金额,description
为计费备注(当计费不为0时必须)Demo:
1
2
3--开机费20块,使用每小时免费
fee = 20
description = T("<p>原价1百多,2百多,3百多的钱包,通通20块</p>")
###流程控制
Lua 编程语言流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。LIMS中的Lua脚本高频使用
if
进行流程控制
if
语句及elseif
语句后要加then
,else
后不用。- 闭合
if
要用end
语句。 强烈建议缩进规范。
1
2
3
4
5
6
7
8
9
10
11a = 100
if ( a <= 10 )
then
print("a 小于 10")
elseif ( a == 10 )
then
print("a 的值为 10")
else
print("a 大于 10")
end
进阶:if
语句一定要覆盖全部可能性。以预约脚本为例:
1 | --校内用户的预约开始时间,只能是每天八点后 |
这段虽然保存到LIMS时不会报错,可是当非校内用户预约时,会得到“自定义脚本未知错误”的提示
###Lua 运算符
运算符是一个特殊的符号,用于告诉解释器执行特定的数学或逻辑运算。
Lua提供了以下几种运算符类型:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 其他运算符
必要了解的运算符:==
and
or
not
..
#
(#
后面会有使用示例)
Lua 运算符 已经介绍得非常详细了,不再赘述。
###Lua 函数
编写LIMS使用到的Lua脚本时,我们很少在Lua中定义函数。Lua 提供了许多的内建函数,足以满足需求,更重要的是,LIMS为Lua脚本开放了许多函数,Lua脚本中只要调用就好了。
进阶:內建函数推荐了解下math库
LIMS中脚本具体可以使用哪些函数,详见下一篇教程LIMS开放的Lua函数。
##结语
- 掌握此篇设计到的知识后,即可独立完成90%以上的Lua脚本编写。
- 如果遇到功能,不清楚能否实现、如何实现,请阅读LIMS开放的Lua函数。
- 如果本篇有知识遗漏或者错误,欢迎随时联系作者。
- 如果想再深入了解Lua,甚至可以细读Lua 5.3 参考手册。