Lua语言

一、简介

Lua是一个小巧的脚本语言,由标准C语言编写而成,几乎可在所有操作系统和平台上编译,运行。Lua不适合作为开发独立应用程序的语言。

Lua可以很容易被C/C++代码调用,也可以反过来调用C/C++的函数,由此可以作为扩展脚本与普通的配置文件,代替XML,ini等文件格式。

二、特性

轻量级:5.0.2版的Lua内核小于120KB

可扩展:借助宿主语言(C/C++)的扩展接口和机制

面向过程与函数式编程

自动内存管理等

例如,通过Lua构建cli命令操作scalar与table:
Lua语言Lua语言

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.luaLua语言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菜鸟教程

Lua参考手册
原文链接: https://www.cnblogs.com/y4247464/p/13322961.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/200492

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:26
下一篇 2023年2月12日 下午8:27

相关推荐