LUA基本应用

lua语言规则:

  
  
  lua_State * L = lua_open(); // 建立一个LUA状态机   luaopen_base(L); // 启动它    const char * buf = " print('hello, world!') " ;   lua_dostring(buf); // 把buf写入到lua中并执行   lua_close(L); // 关闭L   lua_pushstring(L, " var " ); // 将变量的名字放入栈]   lua_getglobal(L, " var " ); // 变量的值现在栈顶    int var = lua_tonumber(L, - 1 ); // 取得栈顶的元素   lua_tostring( ls, - 1 ); // 取得栈顶的的元素, 一般用于参数传递   lua_pushstring( ls, s_szPlayer ); // 把某个字符串元素压入栈中,可用于参数传出   lua_pushnumber(L, 200 ); // 把某个数字元素压入栈中,   lua_register(L, " foo " , foo);
// 把自己在C++中编写的函数foo拿到lua中注册,这样在lua脚本中就可以调用这个函数

  在Lua中,函数等同于变量,所以你可以这样来取得这个函数:

  
  
  lua_getglobal(L, " main " ); // 函数现在栈顶

  现在,我们可以调用这个函数,并传递给它正确的参数:

  
  
  lua_pushnumber(L, 100 ); // 将参数压栈   lua_pcall(L, 1 , 1 , 0 ); // 调用函数,有一个参数,一个返回值    // 返回值现在栈顶    int result = lua_tonumber(L, - 1 );

  例子:

  
  
  #include " lua.h "   #include " lauxlib.h "   #include " lualib.h "    int foo(lua_State * L)   {    // 首先取出脚本执行这个函数时压入栈的参数    // 假设这个函数提供一个参数,有两个返回值    // get the first parameter    const char * par = lua_tostring(L, - 1 );   printf( " %s/n " , par);    // push the first result   lua_pushnumber(L, 100 );    // push the second result   lua_pushnumber(L, 200 );    // return 2 result    return 2 ;   }    int main( int argc, char * argv[]){   lua_State * L = lua_open();   luaopen_base(L);   luaopen_io(L);   lua_register(L, " foo " , foo);    const char * buf = " r1, r2 = foo( " hello " ) print(r1..r2) " ;   lua_dostring(L, buf);   lua_close(L);    return 0 ;   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值