Quando si stampa certi tipi a lua (quali le funzioni e tabelle), si ottiene il nome del tipo e un indirizzo, come di seguito:ottenere l'indirizzo di un oggetto lua
> tab = {}
> print(tab)
table: 0xaddress
Ho creato un classe semplice come sotto, e mi piacerebbe sovrascrivere il metodo __tostring
in modo simile. Come ottengo l'indirizzo dell'oggetto che voglio stampare?
Ecco la mia classe. Vorrei print(pair)
stampare Pair: 0xaddress
. Ovviamente questo è un esempio banale, ma il concetto è utile:
Pair = {}
Pair.__index = Pair
function Pair.create()
local p = {}
setmetatable(p, Pair)
p.x = 0
p.y = 0
return p
end
function Pair:getx()
return self.x
end
function Pair:gety()
return self.y
end
function Pair:sety(iny)
self.y=iny
end
function Pair:setx(inx)
self.x=inx
end
+1 perché funziona, ma sarebbe bello se Lua avesse una funzione 'rawtostring' per rendere inutile questo tipo di hack. – finnw
Questo non è thread-safe, vero? – Llamageddon