原型: void luaL_getmetatable (lua_State *L, const char *tname); 描述: 将注册表中以tname为key的元表push到栈顶. luaL_setmetatable 原型: void luaL_setmetatable (lua_State *L, const char *tname); 描述: 将栈顶元素存储到注册表中, 它的key为tname. luaL_getsubtable 原型: int luaL_get...
luaL_newmetatable(L, "Point"); lua_setmetatable(L, -2); // 在 Lua 脚本中使用用户数据 luaL_dostring(L, "pt = ...; print(pt.x, pt.y)"); lua_pushuserdata(L, point); lua_setglobal(L, "pt"); lua_close(L); // 关闭并销毁 Lua 状态 return 0; } lua_getmetatable int lua_ge...
1 setmetatable(table,metatable): 对指定table设置元表(metatable),如果元表(metatable)中存在__metatable键值,setmetatable会失败 。 2 getmetatable(table): 返回对象的元表(metatable)。 1. 2. 下面是例子,这个例子是简单的定义一个“+”运算符,将两个table中对应键的值相加再返回一个新表。至于表的大小是否...
getmetatable(table) 其他类型设置元表只能通过c代码提供的API接口创建元表,比如luaL_newmetatable 2. lua层setmetatable和getmetatable使用方法 首先我们看一下C代码是怎么实现的 static const luaL_Reg base_funcs[] = { {"getmetatable", luaB_getmetatable}, {"setmetatable", luaB_setmetatable}, }; ...
C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1、 读写Lua全局变量的函数; 2、 调用Lua函数的函数; 3、 运行Lua代码片段的函数; 4、 注册C函数后可以在Lua中被调用的函数; 在C和LUA之间交互的关键在于一个虚拟栈(virtual stack),数据交互通过栈进行。操作数据时,首先将数据拷贝到栈上,然后...
C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1、 读写Lua全局变量的函数; 2、 调用Lua函数的函数; 3、 运行Lua代码片段的函数; 4、 注册C函数后可以在Lua中被调用的函数; 在C和LUA之间交互的关键在于一个虚拟栈(virtual stack),数据交互通过栈进行。操作数据时,首先将数据拷贝到栈上,然后...
metatable)。每个 table 和 userdata value 都有一个属于自己的 metatable,而其他每种类型的所有 value 共享一个属于本类型的 metatable。在 Lua 代码中,通过调用 setmetatable 来设置且只能设置 table 的 metatable,在 C/C++ 中调用 Lua C API 则可以设置所有 value 的 metatable。默认的情况下,...
Lua C API是一组用于扩展Lua语言功能的C语言接口。它允许开发人员在C语言中直接调用Lua的功能,并将C语言代码与Lua代码进行交互。Lua C API提供了一系列函数和数据结构,使得开发人员可以创建Lua对象、调用Lua函数、读取和修改Lua变量等。 metatable函数是Lua中用于处理元表(metatable)的函数。元表是一种特殊的表,用于...
元表和表是一一对应的,有setmetatable去设置元表,也可以通过getmetatable去获取元表,语法:...
lua_setmetatable 设置元表,如果不是table或userdata,那么为该类型的设置元表。 lua_setfenv 设置环境变量table。 load & call lua_call 调用方法。 lua_pcall 类似lua的方法xpcall,保护调用。 lua_cpcall 保护调用c方法,可传入一个指针作为参数。 lua_load ...