gpt4 book ai didi

printing - 获取lua对象的地址

转载 作者:行者123 更新时间:2023-12-04 14:31:27 27 4
gpt4 key购买 nike

当你在 lua 中打印某些类型(例如函数和表)时,你会得到类型的名称和地址,如下所示:

> tab = {}
> print(tab)
table: 0xaddress

我创建了一个简单的类,如下所示,我想覆盖 __tostring方法同上。如何获取要打印的对象的地址?

这是我的课。我要 print(pair)打印出来 Pair: 0xaddress .显然这是一个微不足道的例子,但这个概念很有用:
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

最佳答案

这是一个很老套的方法:

Pair.__tostringx = function (p)
Pair.__tostring = nil
local s = "Pair " .. tostring(p)
Pair.__tostring = Pair.__tostringx
return s
end
Pair.__tostring = Pair.__tostringx

> print(p)
Pair table: 0x7fe469c1f900

你可以在 Pair.__tostringx 里面做更多的字符串操作获得您想要的格式,例如,删除“表格”。

关于printing - 获取lua对象的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12787308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com