开始使用lua5.1

原创 2006年06月09日 18:16:00

lua是一个很强大脚本语言.可以用于编写AI的流程,可以编写状态机.在客户端,可以根据这个配置来生出界面.
如果要使用这个东西先还是要去下载到http://www.lua.org
在我写这文章的时候最新版本是5.1.
使用5.1的时候,如果还是看以前的那一些文章与例子可能会有问题.原因是新版本的lua初始化一些库的时候,有一个库是不能被初始化的luaopen_io(),这个函数一调用就会完蛋.
在新的版本里不是这样写的了.
L = luaL_newstate();       // 新建一个lua_Staue出来
 luaL_openlibs(L);           // 初始化所有的库
在新的版本里,我们就不需要一个一个的去调用了.两个函数搞定.(只是需要有一些太硬性了,可能有一些类库在我这个应用中是不需要使用的,有一点浪费)
这次我使用lua脚本做了一下配置文件,代替了以前使用xml文档.在C++里使用lua很重要的一点是那个堆栈.需要明白这个堆栈的工作原理.为了调试的方便.需要写一个检查堆栈的函数:

void stackDump(lua_State *L)
{
 
 int i;
 int top = lua_gettop(L);
 for (i = 1; i <= top; i++)
 { 
  int t = lua_type(L, i);
  switch (t)
  {
  case LUA_TSTRING: /* strings */
   cout<<"字符串/t"<<lua_tostring(L, i);
   break;
  case LUA_TBOOLEAN: /* booleans */
   printf(lua_toboolean(L, i) ? "true" : "false");
   break;
  case LUA_TNUMBER: /* numbers */
   printf("数字/t %g /n", lua_tonumber(L, i));
   break;
  default: /* other values */
   printf("其它值/t %s /n", lua_typename(L, t));
   break;
  }
  printf(" "); /* put a separator */
 }
 printf("::::::::::::::::结束:::::::::::::::::/n");
}

这个东西调用之后,就可以把lua_Statue中的堆栈都导出来.很方便的.
说明几个函数的作用:
luaL_newstate 使用它将会将建一个lua_Statue.出来.
luaL_openlibs 初始化全部的库
if (luaL_loadfile(L, szFileName) || lua_pcall(L, 0, 0, 0)) 这里有两个函数.一个是加载文件.第二个pcall函数调用之后将会把加载的lua文件加载到内存块中.以便后来来查询.
lua_getglobal(L,"width");这是对全局的堆栈里压一个变量,之后马上会调用查询,调用的时候pop一次,查询到了结果之后会push结果到栈里.使用lua_tonumber()函数来得到这个栈里的一个元素的内容.lua_pop()用于pop栈中的东西.查询完成之后是需要pop掉的.lua_gettable()这个函数比较的特别.当你进入了一个表之后,想查询这个表中的内容的时候就需要lua_pushstring()之后调用这个函数.就可以得到这个表中的内容了.有一些像把lua_getglobal里的过程被分开了二个部分一样的.一个有push的过程,还有一个查询的过程.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Tolua使用笔记一:开始使用Tolua的准备工作与lua文件读取方法

原文地址:http://blog.csdn.net/qq_30168505/article/details/52743603其实作者自带的那个说明已经很详细了,不过为了赚点访问量,我还是自己也来个简单...

vs项目中使用c++调用lua5.1

http://blog.csdn.net/wangbin_jxust/article/details/37557935 一、创建项目 同样在该解决方案中,右键解决方案->添加项目-...

appscan开始使用指南

  • 2014-01-21 10:49
  • 1.77MB
  • 下载

从零开始使用tensorflow(1)——安装

1.      Python和jdk1.8之前已经安装好了。 2.      Pip install https://storage.googleapis.com/tenso...

如何忘却jQuery,开始使用JavaScript原生API

JavaScript就在这里随时等候你的召唤,但是也许你还没有准备好如何使用他。为什么不用jQuery呢?因为它很慢并且你的网站真的不需要这些多余的负担。 我不是来这里争辩原生API和函数库的迥异,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)