12

Почему системные объекты, такие как nil, true или false, имеют идентификатор фиксированного объекта в Ruby. Также я попробовал распечатать идентификаторы объектов из числа, они одинаковы и следуют шаблону последовательности нечетных чисел. Любое объяснение этому?Идентификатор фиксированного объекта для системных объектов и малых целых чисел в Ruby

[nil,true,false].each { |o| print o.object_id, ' '} 
4 2 0 => [nil, true, false] 

>> (0..50).each { |i| print i.object_id, ' ' } 
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 101 => 0..50 
+3

Возможный дубликат [Ruby - как работает object_id?] (Http://stackoverflow.com/questions/3430280/ruby-how-does-object-id-assignment-work) – sepp2k

ответ

18

Следующие две ссылки объяснить концепцию позади идентификаторов объектов в Ruby:

http://www.oreillynet.com/ruby/blog/2006/01/the_ruby_value_1.html http://www.oreillynet.com/ruby/blog/2006/02/ruby_values_and_object_ids.html

Объект ID рассчитывается из стоимости объектов плюс некоторую дополнительную информацию. Из этого расчета вы можете получить значения, которые вы видите в своих примерах.

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

  • Нет связанных вопросов^_^