2013-03-02 79 views
12

我正在使用inspect.lua檢查表到字符串。如何檢查lua中的userdata

但是,如果該值是用戶數據,它返回只是<userdata 1>

我真的需要知道用戶數據類型是什麼,用戶數據值是什麼,它是調試運行非常重要,我不想做它在任何IDE中,我只想要一些東西可以幫助我由打印人員進行調試。

+5

您可以從'getmetatable(someuserdata)'獲得唯一的信息。你想要檢查什麼? – Eric 2013-03-02 15:12:51

+1

非常感謝,有一些非常有用的東西,'print(檢查(getmetatable(someuserdata)))' – 2013-03-02 15:17:14

+0

其中「someuserdata」是什麼,到底是什麼? getmetatable的返回值是什麼?該手冊是無用的。 – CashCow 2015-01-12 15:51:39

回答

7

你不能。

manual

提供userdata類型允許任意C數據要被存儲在Lua變量。用戶數據值是指向原始存儲器塊的指針。 [...]用戶數據在Lua中沒有預定義的操作,除了賦值和身份測試。

正如@Eric表示,可以從Lua唯一能做的就是檢查元表:

print(inspect(getmetatable(someuserdata))) 

如果您使用的是C API,你應該能夠註冊自定義功能打印該塊所持有的任何東西。

+1

和身份測試是? – CashCow 2015-01-12 15:14:14

+0

@CashCow:身份測試是==。也就是說,表達式(someuserdata == someuserdata)在我公認的有限測試中返回true。看起來像〜=也適用。 – solublefish 2016-03-26 00:27:36