16

inspect.luaを使用して、テーブルから文字列を検査しています。

ただし、値がユーザーデータの場合は、単に返されます<userdata 1>

ユーザーデータ型とは何か、ユーザーデータ値とは何かを本当に知る必要があります。これはデバッグにとって非常に重要です。どのIDEでもやりたくありません。印刷スタッフによるデバッグに役立つ何かが欲しいだけです。

4

2 に答える 2

15

それはいけません。

マニュアルから:

タイプ userdata は、任意の C データを Lua 変数に格納できるようにするために提供されています。ユーザーデータ値は、生メモリのブロックへのポインタです。[...] ユーザーデータには、割り当てと ID テストを除いて、Lua で定義済みの操作はありません。

@Eric で示されているように、Lua からできる唯一のことは、メタテーブルを検査することです。

print(inspect(getmetatable(someuserdata)))

C API を使用している場合は、ブロックが保持しているものを出力するカスタム関数を登録できるはずです。

于 2013-03-18T07:30:16.337 に答える