gpt4 book ai didi

c++ - 如何检查传递给 Lua 的参数是否是用户定义的类型?

转载 作者:行者123 更新时间:2023-11-30 03:07:34 24 4
gpt4 key购买 nike

我正在使用 Lua 为我的基于 Ogre3d 的应用程序实现脚本,我在检查输入函数的参数是否属于特定类型时遇到了问题 - Ogre::SceneNode*。有人知道我该怎么做吗?

有一些基本的 Lua 函数可以为内置类型(例如 int 或 string)执行此操作

if(lua_isnumber(L,1))
{...}

但我不知道如何使用用户定义的类型。

最佳答案

如果您安排每个特定类型的 userdata 共享一个元表,那么您可以使用 luaL_checkudata确认他们的类型。这通常是图书馆标记和识别其创建的数据的方式。

下面是一些使用这种技术创建和检查用户数据的函数:

static decContext *ldn_check_context (lua_State *L, int index)
{
decContext *dc = (decContext *)luaL_checkudata (L, index, dn_context_meta);
if (dc == NULL) luaL_argerror (L, index, "decNumber bad context");
return dc; /* leaves context on Lua stack */
}

static decContext *ldn_make_context (lua_State *L)
{
decContext *dc = (decContext *)lua_newuserdata(L, sizeof(decContext));
luaL_getmetatable (L, dn_context_meta);
lua_setmetatable (L, -2); /* set metatable */
return dc; /* leaves context on Lua stack */
}

元表是用

创建的
const char *dn_context_meta = "decNumber_CoNTeXT_MeTA";
luaL_newmetatable (L, dn_context_meta);

关于c++ - 如何检查传递给 Lua 的参数是否是用户定义的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5755238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com