2013-03-02 26 views
12

inspect.luaを使用してテーブルを文字列に検査しています。ルアでユーザーデータを検査する方法

しかし、値がユーザーデータであれば、それは私が実際にユーザデータタイプがユーザデータ値が何であるか、である、それはデバッグのために非常に重要なのかを知るために必要なだけの<userdata 1>

、私はしたくない返します任意のIDEで、印刷スタッフがデバッグするのに役立つものがほしいだけです。

+5

入手できる唯一の情報は 'getmetatable(someuserdata)'です。正確に何を検査したいですか? – Eric

+1

ありがとう、何か非常に便利です、 'print(inspect(getuseratable(someuserdata)))' –

+0

ここで「someuserdata」は何ですか? getmetatableの戻り値は正確に何ですか?マニュアルは役に立たない。 – CashCow

答えて

7

できません。 manualから

型ユーザーデータは、任意のCデータをLuaの変数に格納されることを可能にするために提供されます。ユーザデータ値は、生のメモリブロックへのポインタです。 [...] Userdataには、割り当てやアイデンティティのテストを除いて、Luaにはあらかじめ定義された操作がありません。あなたはCのAPIを使用している場合は、そのカスタム関数を登録することができるはず

print(inspect(getmetatable(someuserdata))) 

@Ericによって示されるように、あなたはLuaのから行うことができる唯一のことは、メタテーブルを検査していますブロックによって保持されているものをすべて出力します。

+1

であり、同一性試験は? – CashCow

+0

@CashCow:アイデンティティテストは==です。つまり、(someuserdata == someuserdata)という表現は、私のように限られたテストで真を返します。 〜=のように見えます。 – solublefish

関連する問題