2013-03-02 11 views
12

Ich verwende inspect.lua, um Tabelle zu Zeichenfolge zu überprüfen.Wie Benutzerdaten in Lua zu überprüfen

Aber, wenn der Wert eines Benutzerdaten ist, es gibt nur <userdata 1>

ich wirklich wissen müssen, was die Benutzerdaten-Typ ist, was der Userdaten Wert ist, ist es für Debugging sehr wichtig ist, will ich nicht tun es in jeder IDE, ich will nur etwas kann mir helfen, von Druckstäben zu debuggen.

+5

Die einzige Information, die Sie erhalten können, stammt von 'getmetatable (someuserdata)'. Was genau wollen Sie inspizieren? – Eric

+1

vielen Dank, es gibt etwas sehr nützliches, 'print (inspect (getmetatable (somuseredata)))' –

+0

wo "someuserdata" ist was genau ?. Und der Rückgabewert von getmetatable ist was genau? Das Handbuch ist nutzlos. – CashCow

Antwort

7

Sie können nicht.

Vom manual:

Der Typ Benutzerdaten zur Verfügung gestellt beliebige C-Daten zu ermöglichen, in Lua-Variablen gespeichert werden. Ein Benutzerdatenwert ist ein Zeiger auf einen Block von Rohspeicher. [...] Userdata hat in Lua keine vordefinierten Operationen, außer Zuweisung und Identitätstest.

Wie @Eric angegeben, das einzige, was Sie von Lua tun können, ist die Metatabelle inspizieren:

print(inspect(getmetatable(someuserdata))) 

Wenn Sie die C-API verwenden, sollten Sie eine benutzerdefinierte Funktion registrieren können, dass druckt alles aus, was vom Block gehalten wird.

+1

und der Identitätstest ist? – CashCow

+0

@CashCow: Der Identitätstest ist ==. Das heißt, der Ausdruck (someuserdata == someuserdata) gibt in meinem zugegebenermaßen eingeschränkten Test den Wert true zurück. Sieht aus wie ~ = auch funktioniert. – solublefish

Verwandte Themen