Несмотря на чтение " Понимание символов Ruby", меня все еще путают представления данных в памяти, когда дело касается использования символов. Если в одной и той же ячейке памяти есть символ, два из которых содержатся в разных объектах, то как они содержат разные значения? Я бы ожидал, что такое же место памяти будет содержать одно и то же значение.
Это цитата из ссылки:
В отличие от строк символы с одинаковым именем инициализируются и существуют в памяти только один раз во время сеанса ruby
Я не понимаю, как ему удается дифференцировать значения, содержащиеся в том же месте памяти.
Рассмотрим следующий пример:
patient1 = { :ruby => "red" }
patient2 = { :ruby => "programming" }
patient1.each_key {|key| puts key.object_id.to_s}
3918094
patient2.each_key {|key| puts key.object_id.to_s}
3918094
patient1
и patient2
- оба хэша, это прекрасно. :ruby
однако является символом. Если бы мы вывели следующее:
patient1.each_key {|key| puts key.to_s}
Тогда что будет выводиться? "red"
или "programming"
?
Забывая хэши на секунду, я думаю, что символ является указателем на значение. У меня есть следующие вопросы:
- Можно ли присвоить значение символу?
- Является ли символ просто указателем на переменную со значением в ней?
- Если символы являются глобальными, означает ли это, что символ всегда указывает на одну вещь?