Все приведенные выше ответы верны, но вы потеряли настройки конфигурации.
Но если ваши темы или шрифты вашей среды IDE изменены или некоторые проблемы, связанные с пользовательским интерфейсом, и вы хотите восстановить тему по умолчанию, просто удалите
$ {user.home} /. IntelliJIdea13 / config / options / options.xml
файл, в то время как IDE не запущен, затем после следующей перезагрузки темы IDE будет сброшен до значения по умолчанию.
Реализация по умолчанию inspect
вызывает реализацию по умолчанию to_s
, которая просто показывает шестнадцатеричное значение объекта напрямую, как показано в Object#to_s
docs (нажмите на описание метода, чтобы открыть источник).
Тем временем комментарии в исходном тексте на C, лежащие в основе реализации object_id
, показывают, что существуют различные "пространства имен" для значений Ruby и идентификаторов объектов в зависимости от типа объекта (например, младший бит кажется нулевым для всех, кроме Fixnums). Вы можете увидеть это в Object#object_id
docs (нажмите, чтобы раскрыть источник).
Оттуда видно, что в "пространстве id объектов" (возвращаемом object_id
) идентификаторы объектов начинаются со второго бита справа (при этом первый бит равен нулю), но в "пространстве значений" (используемом inspect
) они начинаются с третьего бита справа (при этом первые два бита равны нулю). Поэтому, чтобы преобразовать значения из "пространства идентификаторов объектов" в "пространство значений", мы можем сдвинуть object_id
влево на один бит и получить тот же результат, который показывает inspect
:
> '%x' % (36971870 << 1)
=> "4684abc"
> a = Foo.new
=> #<Foo:0x5cfe4>
> '%x' % (a.object_id << 1)
=> "5cfe4"
0x234255E
=>36971870
Это не разница, это шестнадцатеричное представление адреса памяти:-)