一、简介
Lua是一个小巧的脚本语言,由标准C语言编写而成,几乎可在所有操作系统和平台上编译,运行。Lua不适合作为开发独立应用程序的语言。
Lua可以很容易被C/C++代码调用,也可以反过来调用C/C++的函数,由此可以作为扩展脚本与普通的配置文件,代替XML,ini等文件格式。
二、特性
轻量级:5.0.2版的Lua内核小于120KB
可扩展:借助宿主语言(C/C++)的扩展接口和机制
面向过程与函数式编程
自动内存管理等
例如,通过Lua构建cli命令操作scalar与table:
1 --get scalar and table
2
3 local function MymodShow()
4 local myModuleSettings = GetEntry('myModuleSettings')
5 util.Print("111111n");
6 util.Print("MyModStateEnable: %sn", util.State(tonumber(myModuleSettings['myModStateEnable'])));
7
8 local myModCtrlEntry = GetEntry('myModCtrlEntry')
9 local RowStatus = {"active", "notInService","notReady","createAndGo","createAndWait","destroy"};
10
11 util.Print("n");
12 util.Print(" This is my module table: n");
13
14 for k, v in pairs(myModCtrlEntry) do
15 util.Print("index :%dn",v['myModIndex']);
16 util.Print("Name :%sn",v['myModName']); --ascii
17 util.Print("Val :%dn",v['myModValue']);
18 util.Print("Rowstatus :%sn",RowStatus[tonumber(v['myMODRowstatus'])]);
19 util.Print("n");
20 end
21 util.Print("n");
22 return Success();
23 end
24
25 --set table
26 local function MymodTableSet(params)
27 local oSeq = {};
28 local ret = {code = 0};
29
30 oSeq = {
31 {myModIndex = params['myModIndex']},
32 {myMODRowstatus = 5},
33 {myModValue= params['myModValue']},
34 {myMODRowstatus = 1}
35 };
36
37 ret=Post('myModCtrlEntry',oSeq);
38 return util.Result(ret);
39 end
40
41 --set scalar
42 local function MymodScalarSet(params)
43
44 local oSeq = {};
45 local ret = {code = 0};
46
47 oSeq = {
48 {myModStateEnable= params['myModStateEnable']}
49 };
50
51 ret=Post('myModuleSettings',oSeq);
52 return util.Result(ret);
53 end
54
55 -- Function declaration
56 Fun.Add('MymodShow', MymodShow)
57 Fun.Add('MymodTableSet', MymodTableSet)
58 Fun.Add('MymodScalarSet', MymodScalarSet)
MyModule.lua
1 DEFINE GROUP : CAMEO_MYMOD_CMDS
2
3 /*show mymodinfo */
4 COMMAND : show mymodinfo
5 ACTION :
6 {
7 CLI_CALL("MymodShow");
8 }
9 SYNTAX : show mymodinfo
10 PRVID : CAMEO_USERACC_USER_PRIVILEGE
11 HELP : This command is used to show mymodule infomation.
12
13 /*config mymodscalar */
14 COMMAND : config mymodscalar <integer(1-2)>
15 ACTION :
16 {
17 CLI_ADDN("myModStateEnable",(UINT4 *)$2);
18 CLI_CALL("MymodScalarSet");
19 }
20 SYNTAX : config mymodscalar
21 PRVID : CAMEO_USERACC_USER_PRIVILEGE
22 HELP : This command is used to config mymodscalar.
23
24 /*config mymodtable */
25 COMMAND : config mymodtable <integer(1-2)> <integer(1-100)>
26 ACTION :
27 {
28 CLI_ADDN("myModIndex",$2);
29 CLI_ADDN("myModValue",$3);
30 CLI_CALL("MymodTableSet");
31 }
32 SYNTAX : config mymodtable <index> <value>
33 PRVID : CAMEO_USERACC_USER_PRIVILEGE
34 HELP : This command is used to config mymodtable.
35
36 END GROUP
cmModCmds.def
Lua参考手册
原文链接: https://www.cnblogs.com/y4247464/p/13322961.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/200492
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!