2016-03-06 32 views
0

,我有以下对象的字符串,我想隐藏的attr_accessor中:的a_list和:b_list,下面产生代表对象ID

<Namespace::SomeObject:0x00000002674538 @a_list={}, @b_list={}> 

我知道我应该重写inspect方法,如:

def inspect 
    "#<{self.class}: >" 
end 

如何获取ID 0x00000002674538

+0

什么是列出的实例变量'@ a_list','@ b_list'。 (它们是否被绑定)attr访问器是无关紧要的。 – sawa

回答

2
"%#016x" % (object_id << 1) 

"%#016x" % (object_id * 2) 
+1

谢谢sawa,这个工程。 :) –

+1

_Sidenote:_这只能在64位平台上按预期工作。与红宝石打印相比,它现在在32位上失败。在128位上它会在不久的将来失败[可能]。所以,请注意按原样使用。 – mudasobwa

+1

@sawa:这是如何工作的,为什么它在32位平台上失败,为什么它会在128位平台上失败? – guitarman