我正在使用inspect.lua来检查表格到字符串。
但是,如果值是userdata,则只返回<userdata 1>
我真的需要知道userdata类型是什么,userdata值是什么,它对于debuging非常重要,我不想在任何IDE中执行它,我只是想要一些东西可以帮我调试打印人员。< / p>
答案 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。不幸的是,此功能仍未得到广泛使用。