如何在lua中检查userdata

时间:2013-03-02 15:00:32

标签: c lua

我正在使用inspect.lua来检查表格到字符串。

但是,如果值是userdata,则只返回<userdata 1>

我真的需要知道userdata类型是什么,userdata值是什么,它对于debuging非常重要,我不想在任何IDE中执行它,我只是想要一些东西可以帮我调试打印人员。< / p>

2 个答案:

答案 0 :(得分:13)

你不能。

来自manual

  

提供类型userdata以允许任意C数据存储在Lua变量中。 userdata值是指向原始内存块的指针。 [...]除了分配和身份测试外,Userdata在Lua中没有预定义的操作。

如@Eric所示,你唯一可以做的就是检查metatable:

print(inspect(getmetatable(someuserdata)))

如果您使用的是C API,那么您应该可以注册一个自定义函数来打印该块所持有的内容。

答案 1 :(得分:0)

如果userdata元表是使用luaL_newmetatable创建的,则它包含包含用户数据类型(自Lua 5.3版起)的条目__name,请参见https://www.lua.org/manual/5.3/manual.html#luaL_newmetatable。不幸的是,此功能仍未得到广泛使用。