加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

打印 – 获取lua对象的地址

发布时间:2020-12-15 00:26:16 所属栏目:大数据 来源:网络整理
导读:当您在lua中打印某些类型(例如函数和表)时,您将获得类型的名称和地址,如下所示: tab = {} print(tab)table: 0xaddress 我已经创建了一个简单的类,如下所示,我想类似地覆盖__tostring方法.如何获取要打印的对象的地址? 这是我的课.我想打印(对)打印出Pair:
当您在lua中打印某些类型(例如函数和表)时,您将获得类型的名称和地址,如下所示:
> tab = {}
> print(tab)
table: 0xaddress

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

这是我的课.我想打印(对)打印出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中做更多的字符串操作来获得你想要的格式,例如删除“table”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读