lua入门教程:第七章 C API c语言 *** 作表格

lua入门教程:第七章 C API c语言 *** 作表格,第1张

lua中表的使用是最常见的,在c中如何对lua中的表进行 *** 作也是很经常使用的功能,在如下的代码中加载了lua 代码以后,通过lua_getglobal 获得了相应的表,可以使用lua_getfield进行相应的设置了,这里必须清楚的一点是,你需要对堆栈中的数据较为清楚,清楚了堆栈顺序,你才能够知道你设置的数据到底是对谁有用的。

下面的例子,找到相应的表,原先的表并没有y的元素,后面通过lua_setfield对数据进行设置。使得lua中表中有了y的元素。

代码如下:

#include "stdafx.h"

extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include "luaconf.h"
};

#include   
using namespace std;

int main()
{
	
	int error;
	lua_State* L = luaL_newstate();
	luaL_openlibs(L);

	int ret = luaL_dofile(L, "table_test.lua");
	if (ret != 0)
	{
		printf("%s", lua_tostring(L, -1));
	}

	lua_getglobal(L, "print_table");
	lua_pcall(L, 0, 0, 0);
	
	
	lua_getglobal(L, "tbtable");
	lua_getfield(L, -1, "x");
	const char *pstr = lua_tostring(L, -1);

	lua_getglobal(L, "tbtable");
	lua_pushstring(L, "abc");
	lua_setfield(L, -2, "y");
	
	lua_getglobal(L, "print_table");
	lua_pcall(L, 0, 0, 0);

	lua_close(L);

    return 0;
}

lua代码如下:

tbtable = {x="12"}

function print_table()
    print(tbtable.x)
	print(tbtable.y)
end

function return_table()
    return {x="abc"}
end

在c语言中,如果不太清楚栈的数据,压栈和出栈情况的话,可以先画出每个步骤的栈情况。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/676522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存