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、付费专栏及课程。

余额充值