Некоторые объекты в Ruby хранятся в переменных как непосредственные значения. К ним относятся целые числа, символы (которые выглядят так: this) и специальные объекты true, false и nil. Когда вы назначаете одно из этих значений переменной (x = 1), переменная содержит само значение, а не ссылку на него. С практической точки зрения это не имеет значения (и это часто будет оставлено подразумеваемым, а не повторяться повторно при обсуждении ссылок и связанных тем в этой книге). Ruby автоматически выполняет разыменование объектных ссылок; вам не нужно выполнять дополнительную работу, чтобы отправить сообщение объекту, который содержит, скажем, ссылку на строку, в отличие от объекта, который содержит непосредственное целочисленное значение. Но у правила представления непосредственной ценности есть несколько интересных ответвлений: особенно когда дело касается целых чисел. Во-первых, любой объект, представленный как непосредственное значение, всегда является одним и тем же объектом, независимо от того, скольким переменным он назначен. Есть только один объект 100, только один объект false и так далее. Непосредственный, уникальный характер переменных с целочисленной привязкой стоит за отсутствием в Ruby операторов пре- и пост-инкремента, то есть в Ruby вы не можете этого сделать: x = 1 x ++ # Нет такого оператора Причина в том, что из-за для непосредственного присутствия 1 в x, x ++ будет подобен 1 ++, что означает, что вы измените число 1 на число 2, а это не имеет смысла. независимо от того, скольким переменным он назначен. Есть только один объект 100, только один объект false и так далее. Непосредственный, уникальный характер переменных с целочисленной привязкой стоит за отсутствием в Ruby операторов пре- и пост-инкремента, то есть в Ruby вы не можете этого сделать: x = 1 x ++ # Нет такого оператора Причина в том, что из-за для непосредственного присутствия 1 в x, x ++ будет подобен 1 ++, что означает, что вы измените число 1 на число 2, а это не имеет смысла. независимо от того, скольким переменным он назначен. Есть только один объект 100, только один объект false и так далее. Непосредственный, уникальный характер переменных с целочисленной привязкой стоит за отсутствием в Ruby операторов пре- и пост-инкремента, то есть в Ruby вы не можете этого сделать: x = 1 x ++ # Нет такого оператора Причина в том, что из-за для непосредственного присутствия 1 в x, x ++ будет подобен 1 ++, что означает, что вы измените число 1 на число 2, а это не имеет смысла.