Недавно я изучал рубин с koans, и я заметил одну вещь о символах и строковых объектах. Когда я назначил две разные переменные одинаковые символы, я обнаружил, что object_id были такими же.Различное поведение строк и символов?
2.1.1 :017 > symbol1 = :a
=> :a
2.1.1 :018 > symbol2 = :a
=> :a
2.1.1 :019 > symbol1.object_id
=> 361768
2.1.1 :020 > symbol2.object_id
=> 361768
Теперь, увидев это, я подумал, что это должны быть истинные строки и целые числа. Но когда я делал то же самое со строками, идентификатор объекта оказался другим.
2.1.1 :021 > string1 = "test"
=> "test"
2.1.1 :022 > string2 = "test"
=> "test"
2.1.1 :023 > string1.object_id
=> 13977640
2.1.1 :024 > string2.object_id
=> 13932280
Почему поведение символов и строк различно?
Взгляните на это http://www.reactive.io/tips/2009/01/11/the-difference-between-ruby-symbols-and-strings/ - Ruby будет использовать символы, но не строки. – August
Вот как создаются символы. Изучите [здесь] (http://rubyforadmins.com/strings-and-symbols#instances-and-reference) – Grych