gpt4 book ai didi

function - 在lua中调用未定义的函数时收到任何通知

转载 作者:行者123 更新时间:2023-12-01 04:01:50 26 4
gpt4 key购买 nike

在 C++ 代码中:

class CWindowUI {
public CWindowUI(const char* title,int width,int height);
.....
};

static int CreateWindow(lua_State *l)
{
int width,height;
char *title;
CWindowUI **winp, *win;

name = (char *) luaL_checkstring(l, 1);
width= lua_tounsigned(l, 2);
height= lua_tounsigned(l, 3);

win = new CWindowUI(title,width,height);
if (win == NULL) {
lua_pushboolean(l, 0);
return 1;
}

winp = (CWindowUI **) lua_newuserdata(l, sizeof(CWindowUI *));
luaL_getmetatable(l, "WindowUI");
lua_setmetatable(l, -2);
*winp = win;

return 1;
}

在 Lua 代码中:
local win = CreateWindow("title", 480, 320);
win:resize(800, 600);

现在我的问题是:

功能 CreateWindow将返回一个名为 win 的对象和函数 resize没有定义。在 Lua 中调用未定义的函数时如何获得通知?

通知应包含字符串 "resize"和参数 800,600 .
我想修改源以将未定义的函数映射到回调函数上,但这是不正确的。

最佳答案

How do I get a notification when I call an undefined function in lua.



你没有。不是你的意思。

可以勾 an __index metamethod到您注册的“WindowUI”元表(*groan*)。您的元方法只会获取它被调用的用户数据和使用的 key 。

但是你不能区分函数调用和简单地访问成员变量,因为 Lua 不区分它们。如果您从元方法返回一个函数,并且用户在从元方法返回时调用函数调用运算符,那么它将被调用。否则,他们会得到一个他们认为合适的功能。他们可以存储它,传递它,稍后调用它,等等。这是一个值(value),就像任何其他值(value)一样。

关于function - 在lua中调用未定义的函数时收到任何通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13042641/

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