zoukankan      html  css  js  c++  java
  • 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
    ");
     6     util.Print("MyModStateEnable: %s
    ", util.State(tonumber(myModuleSettings['myModStateEnable'])));
     7 
     8     local myModCtrlEntry = GetEntry('myModCtrlEntry')
     9     local RowStatus = {"active", "notInService","notReady","createAndGo","createAndWait","destroy"};
    10 
    11     util.Print("
    ");
    12     util.Print(" This is my module table: 
    ");
    13 
    14     for k, v in pairs(myModCtrlEntry) do
    15         util.Print("index :%d
    ",v['myModIndex']);
    16         util.Print("Name  :%s
    ",v['myModName']); --ascii
    17         util.Print("Val   :%d
    ",v['myModValue']);
    18         util.Print("Rowstatus :%s
    ",RowStatus[tonumber(v['myMODRowstatus'])]);
    19         util.Print("
    ");
    20     end
    21     util.Print("
    ");
    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参考手册

  • 相关阅读:
    参数默认值
    调用外部 DLL 中的函数(1. 早绑定)
    Delphi 运行时错误信息表
    分享:PyPyODBC 0.9.2发布 纯Python实现的pyodbc替代库
    我的书单
    我的书单
    Philip Guo googler
    我的书单
    isbn2title
    我的书单
  • 原文地址:https://www.cnblogs.com/y4247464/p/13322961.html
Copyright © 2011-2022 走看看