gpt4 book ai didi

ruby - 如何打印 Ruby 对象的内存位置

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:13 25 4
gpt4 key购买 nike

有没有办法打印出 Ruby 对象的内存位置,而不是从 puts self 中打印出来,因为我想要一个自定义的 to_s 方法并打印内存指针位置作为要输出的信息之一。

最佳答案

我不知道您为什么想要这样的功能,这是非常特定于实现的,但是在 MRI 1.9 上您可以(ab)使用 object_id:

ruby-1.9.2-p180 :022 > class A; end
=> nil
ruby-1.9.2-p180 :023 > a = A.new
=> #<A:0xa2b72e4>
ruby-1.9.2-p180 :024 > a.object_id.to_s(16)
=> "515b972"
ruby-1.9.2-p180 :025 > (a.object_id << 1).to_s(16)
=> "a2b72e4"

有关它为何起作用的解释,请查看 relevant lines在 MRI gc.c 中。

请注意,这不适用于其他实现(JRuby、Rubinius),并且很可能会在未来的 Ruby 版本中中断。此外,在某些实现中可能根本无法获取地址(我怀疑您不能在 JRuby 中;我不确定,通过)。

关于ruby - 如何打印 Ruby 对象的内存位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6974093/

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