table相关的API

本文深入解析Lua编程中全局变量的获取与设置,以及表的基本操作方法,包括全局变量的使用场景、堆栈变化及表的创建、获取、设置等核心概念,帮助开发者熟练掌握Lua的内存管理和数据结构应用。

void lua_getglobal (lua_State *L, const char *name);
获取lua全局变量,将lua的全局变量global name压栈。
堆栈+1

void lua_setglobal (lua_State *L, const char *name);
设置lua全局变量,弹出一个值,并将之设为global name的值。
堆栈-1

void lua_createtable (lua_State *L, int narr, int nrec);
创建空表并压栈,会根据参数预分配空间,如果你知道表将会有多大,预先分配的性能会更好。
堆栈+1

void lua_newtable (lua_State *L);
创建空表并压栈,相当于lua_createtable(L, 0, 0)
堆栈+1

void lua_gettable (lua_State *L, int index);
获取lua表中的值,将t[k]压栈,t表示index所指向的栈中的表,k表示存放在栈顶的索引。
(1)栈顶索引key出栈;(2)然后将t[k]的值压栈;(3)在lua中会触发metamethod的index事件。
堆栈大小不变

void lua_settable (lua_State *L, int index);
设置lua表中的值,进行t[k]=v操作,t表示index所指向的栈中的表,v表示栈顶的值,k表示存放在v的下面的索引key。
(1)v和k都会出栈;(2)在lua中会触发metamethod的newindex事件。
堆栈-2

void lua_getfield (lua_State *L, int index, const char *k);
t[k]入栈,t表示index所指向的栈中的表,会触发metathod.index事件。
堆栈+1

void lua_setfield (lua_State *L, int index, const char *k);
进行t[k]=v操作,t表示index所指向的栈中的表,v表示栈顶的值。
(1)栈顶v会出栈;(2)在lua中会触发metamethod.newindex事件。
堆栈-1

void lua_rawget (lua_State *L, int index);
和lua_gettable类似,但不会触发metatable。
堆栈不变

void lua_rawset (lua_State *L, int index);
和lua_settable类似,但不会触发metatable。
堆栈-2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值