Lua C API 遍历 table】的更多相关文章

http://timothyqiu.com/archives/lua-note-table-traversal-using-c-api/ C API 遍历 Table lua_getglobal(L, t); int index = lua_gettop(L); lua_pushnil(L); while (lua_next(L, index)) { /* 此时栈上 -1 处为 value, -2 处为 key */ lua_pop(L, ); } lua_next 函数针对 -2 处(参数指定…
当我在工作中使用lua进行开发时,发现在lua中有4种方式遍历一个table,当然,从本质上来说其实都一样,只是形式不同,这四种方式分别是: for key, value in pairs(tbtest) do XXX end for key, value in ipairs(tbtest) do XXX end for i=1, #(tbtest) do XXX end for i=1, table.maxn(tbtest) do XXX end 前两种是泛型遍历,后两种是数值型遍历.当然你还…
本文转自http://blog.csdn.net/a_asinceo/article/details/49907903(感谢...) 一.单个参数的传递 首先我们在Lua中注册一个C类PJYCallbackMgr,其中一个方法为: int testLuaCall(lua_State* L){ ... ... 然后我们在Lua调用这个方法,传入各种值,首先我们传入一个int,例如: <pre name="code" class="java">PJYCall…
此文转自http://blog.csdn.net/perfect2011/article/details/19200511(感谢...) 首先了解下c++与lua之间的通信: 假设在一个lua文件中有如下定义 -- hello.lua 文件 myName = "beauty girl" 请注意红色数字,代表通信顺序: 1) C++想获取Lua的myName字符串的值,所以它把myName放到Lua堆栈(栈顶),以便Lua能看到 2) Lua从堆栈(栈顶)中获取myName,此时栈顶再次…
通过c++调用lua 脚本,    环境VC++6.0    lua  sdk 5.1.4 在调用前先认识几个函数.1.调用lua_open()将创建一个指向Lua解释器的指针.2. luaL_openlibs()函数加载Lua库.3.使用luaL_dofile()加载脚本并运行脚本.4. lua_close()来关闭Lua指向解释器的指针. 5.调用lua_getglobal()将add()函数压入栈顶,add()为lua函数.6.第一个参数x,通过调用lua_pushnumber()入栈.7…
Lua垃圾收集策略 Lua自动进行内存的管理.程序只能创建对象,而没有执行删除对象的函数.通过使用垃圾收集技术,Lua会自动删除那些失效的对象,也就是引用为0 的对象.但是呢?有些对象,引用没有指向它,就没办法引用到他,就相当于没法回收的垃圾内存. 一个典型的例子就是堆栈:有一个数组和指向栈顶的索引构成.认为数组中有效的只是在顶端的那一部分,但Lua不那么认为.如果你通过简单的出栈操作提取一个数组元素,那么数组对象的其他部分对Lua来说仍然是有效的.同样的,任何在全局变量中声明的对象,都不是Lu…
Cocos2d-x 脚本语言Lua基本数据结构-表(table) table是Lua中唯一的数据结构.其它语言所提供的数据结构,如:arrays.records.lists.queues.sets等.Lua都是通过table来实现.而且在lua中table非常好的实现了这些数据结构. --摘自:<Programming in Lua> 看下面代码,能够非常清晰的明确Lua中表的使用: -- Lua中的表,table Config = {hello="Hello Lua",w…
之前一直没理清lua_gettable和lua_settable的使用,今天理清了,顺便就做下笔记了.1.lua_gettable void lua_gettable (lua_State *L, int index); 把t[k] 值压入堆栈,这里的 t 是指有效索引 index 指向的值,而 k 则是栈顶放的值.这个函数会弹出堆栈上的 key,把结果放在栈上相同位置. 下面举个例子: // 将一个key放到栈顶,这个key为1.如果你的key是字符串,那就用lua_pushstring. l…
转自:http://www.cnblogs.com/ringofthec/archive/2010/10/22/lua.html 1.  建一个新表 void lua_createtable (lua_State *L, int narr, int nrec) 创建一个新的table, 并把它放在栈顶. narr和nrec分别指定该table的array部分和hash部分的预分配元素数量 无返回值 栈高度+1, 栈顶元素是新table #define lua_newtable(L) lua_cr…
http://blog.codingnow.com/2015/05/lua_c_api.html http://blog.csdn.net/oilcode/article/details/51086147 https://www.lua.org/manual/5.3/ https://cloudwu.github.io/lua53doc/manual.html 关于异常处理 1. 如果要在C++工程中使用Lua库,需要用C++的编译器来编译Lua库,这会促使编译后的Lua库使用try...cat…