• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Lua语言

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、简介

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("111111\n");
 6     util.Print("MyModStateEnable: %s\n", 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 :%d\n",v['myModIndex']);
16         util.Print("Name  :%s\n",v['myModName']); --ascii
17         util.Print("Val   :%d\n",v['myModValue']);
18         util.Print("Rowstatus :%s\n",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菜鸟教程

Lua参考手册


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Luastring库详解发布时间:2022-07-22
下一篇:
lua颜色转化处理发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap