一、简介
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)