Ruby 生成表示对象id的字符串

Ruby 生成表示对象id的字符串,ruby,object,inspect,Ruby,Object,Inspect,我有以下对象,我想在下面隐藏:a_列表和:b_列表的属性访问器 <Namespace::SomeObject:0x00000002674538 @a_list={}, @b_list={}> 如何获取ID0x00000002674538?列出的是实例变量@a\u list,@b\u list。(它们是否绑定到)attr访问器无关紧要。列出的是实例变量@a_list,@b_list。(是否绑定到)attr访问器无关紧要。旁注:这只在64位平台上正常工作。与ruby打印的内容相比,在3

我有以下对象,我想在下面隐藏:a_列表和:b_列表的属性访问器

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

如何获取ID
0x00000002674538

列出的是实例变量
@a\u list
@b\u list
。(它们是否绑定到)attr访问器无关紧要。列出的是实例变量
@a_list
@b_list
。(是否绑定到)attr访问器无关紧要。旁注:这只在64位平台上正常工作。与ruby打印的内容相比,在32位上它现在失败了。在128位上,它在最近的将来[可能]会失败。所以,请注意按原样使用。@sawa:这是如何工作的,为什么它在32位平台上失败,为什么它在128位平台上失败?mudasobwa可能提到了
0
填充。在上面的代码中,字符串设置为总共16个字符。您可以根据您的机器进行调整。如果您想要一个无所不在的解决方案,请将
16
替换为
1.size*2
。旁注:这只在64位平台上正常工作。与ruby打印的内容相比,在32位上它现在失败了。在128位上,它在最近的将来[可能]会失败。所以,请注意按原样使用。@sawa:这是如何工作的,为什么它在32位平台上失败,为什么它在128位平台上失败?mudasobwa可能提到了
0
填充。在上面的代码中,字符串设置为总共16个字符。您可以根据您的机器进行调整。如果您想要一个无处不在的解决方案,请将
16
替换为
1.size*2
"%#016x" % (object_id << 1)
"%#016x" % (object_id << 1)
"%#016x" % (object_id * 2)