Lua語言


一、簡介

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參考手冊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM