2016-03-06 2 views
0

У меня есть следующий объект, и я хочу, чтобы скрыть attr_accessor от: a_list и: b_list нижеГенерирование строки, представляющей идентификатор объекта

<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

Смежные вопросы