Podczas drukowania pewnych typów w Lua (takich jak funkcje i tablice), można uzyskać nazwę typu i adresu, jak poniżej:uzyskać adres obiektu lua
> tab = {}
> print(tab)
table: 0xaddress
Stworzyłem prosta klasa jak poniżej i chciałbym podobnie zastąpić metodę __tostring
. Jak uzyskać adres obiektu, który chcę wydrukować?
Oto moja klasa. Chciałbym print(pair)
wydrukować Pair: 0xaddress
. Oczywiście jest to trywialny przykład, ale pojęcie to jest przydatne:
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, ponieważ to działa, ale byłoby miło, gdyby Lua miała funkcję "rawtostring", aby takie hakowanie było niepotrzebne. – finnw
To jednak nie jest bezpieczne dla wątków, prawda? – Llamageddon