有没有办法打印出Ruby对象的内存位置,而不是 puts self因为我想要一个自定义to_s方法并将内存指针位置打印为要输出的信息之一.
whi*_*ark 17
我不知道为什么你想这样的功能,这是非常特定于实现的,但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"
Run Code Online (Sandbox Code Playgroud)
有关其原因的解释,请查看MRI中的相关行gc.c.
请注意,这不适用于其他实现(JRuby,Rubinius),并且可能在未来的Ruby版本中打破.此外,在某些实现中可能根本没有办法获取地址(我怀疑你不能在JRuby中;我不确定,通过).
| 归档时间: |
|
| 查看次数: |
5353 次 |
| 最近记录: |