Lua API 小记

Lua API 小记

ID:44138772

大小:114.75 KB

页数:11页

时间:2019-10-19

Lua API 小记_第1页
Lua API 小记_第2页
Lua API 小记_第3页
Lua API 小记_第4页
Lua API 小记_第5页
资源描述:

《Lua API 小记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《LuaAPI小记》转载自RingOfTheC[ring.of.the.c@gmail.com]一、第一部分(API)这些东西是平时遇到的,觉得有一定的价值,所以记录下来,以后遇到类似的问题可以查阅,同时分享出来也能方便需要的人,转载请注明来自RingOfTheC[ring.of.the.c@gmail.com]打算记录一些lua_api,可能会觉得lua文档中已经说的很清楚了,但是我将用自己的方式,记录下我认为重要的东西,先约定一下api说明的格式编号.api作用简述api函数原型api操作说明返回值说明对栈的影响注意事项1.建一个新表voidlu

2、a_createtable(lua_State*L,intnarr,intnrec)创建一个新的table,并把它放在栈顶.narr和nrec分别指定该table的array部分和hash部分的预分配元素数量无返回值栈高度+1,栈顶元素是新table#definelua_newtable(L)lua_createtable(L,0,0)常用这个2.取表中的元素voidlua_getfield(lua_State*L,intindex,constchar*k)操作:arr=Stack[index]//arr肯定是表Stack.push(arr[k])取

3、表中键为k的元素,这里的表是由index指向的栈上的一个表无返回值栈高度+1,栈顶元素是(Stack[index])[k]注意,该操作将触发__index元方法3.给表中的元素赋值voidlua_setfield(lua_State*L,intindex,constchar*k)操作:arr=Stack[index]arr[k]=Stack.top()Stack.pop()给表中键为k的元素赋值value(value就是栈顶元素),这里的表是由index指向的栈上的一个表无返回值栈高度-1,被弹出的是value注意,该操作将触发__newindex元

4、方法4.取表元素和表元素赋值voidlua_gettable(lua_State*L,intindex)操作:ele=Stack[index]key=Stack.top()Stack.pop()value=ele[key]Stack.push(value)根据index指定取到相应的表;取栈顶元素为key,并弹出栈;获取表中key的值压入栈顶.无返回值栈高度不变,但是发生了一次弹出和压入的操作,弹出的是key,压入的是value注意,该操作将触发__index元方法voidlua_settable(lua_State*L,intindex)操作:el

5、e=Stack[index]value=Stack.top()Stack.pop()key=Stack.top()Stack.pop()ele[key]=value根据index指定取到相应的表;取栈顶元素做value,弹出之;再取当前栈顶元素做key,亦弹出之;然后将表的键为key的元素赋值为value无返回值栈高度-2,第一次弹出value,第二次弹出key注意,该操作将触发__newindex元方法5.对table的一些操作[不引发原方法]voidlua_rawget(lua_State*L,intindex)和lua_gettable操作一样

6、但是不触发相应的元方法voidlua_rawgeti(lua_State*L,intindex,intn)操作:ele=Stack[index]value=ele[n]Stack.push(value)无返回值栈+1,栈顶新增元素就是value不触发相应的元方法voidlua_rawset(lua_State*L,intindex)和lua_settable操作一样但是不触发相应的原方法voidlua_rawseti(lua_State*L,intindex,intn)操作:ele=Stack[index]value=Stack.top()Stack

7、.pop()ele[n]=value无返回值栈-1,栈顶将value弹出不触发相应的元方法6.复制栈上元素并压入栈voidlua_pushvalue(lua_State*L,intindex)操作:value=Stack[index]Stack.push(value)无返回值栈+17.创建一个元表intluaL_newmetatable(lua_State*L,constchar*tname)操作:1.在注册表中查找tname,如果已经注册,就返回0,否者继续,并平栈lua_getfield(L,LUA_REGISTRYINDEX,tname)if(

8、!lua_isnil(L,-1))return0;lua_pop(L,1);2.创建一个表,并注册,返回1l

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。