Alguns objetos no Ruby são armazenados em variáveis como valores imediatos. Isso inclui números inteiros, símbolos (que se parecem com: this) e os objetos especiais true, false e nil. Quando você atribui um desses valores a uma variável (x = 1), a variável mantém o próprio valor, em vez de uma referência a ele. Em termos práticos, isso não importa (e muitas vezes será deixado implícito, e não explicitado repetidamente, nas discussões de referências e tópicos relacionados neste livro). Ruby lida com a desreferenciação de referências de objetos automaticamente; você não precisa fazer nenhum trabalho extra para enviar uma mensagem para um objeto que contenha, por exemplo, uma referência a uma string, em oposição a um objeto que contenha um valor inteiro imediato. Mas a regra de representação de valor imediato tem algumas ramificações interessantes, especialmente quando se trata de números inteiros. Por um lado, qualquer objeto que é representado como um valor imediato é sempre exatamente o mesmo, não importa quantas variáveis sejam atribuídas. Há apenas um objeto 100, apenas um objeto falso, e assim por diante. A natureza imediata e única das variáveis de número inteiro está por trás da falta de operadores de pré e pós-incremento do Ruby - ou seja, você não pode fazer isso no Ruby: x = 1 x ++ # Não existe esse operador O motivo é que, devido a para a presença imediata de 1 em x, x ++ seria como 1 ++, o que significa que você mudaria o número 1 para o número 2 - e isso não faz sentido. não importa quantas variáveis sejam atribuídas. Há apenas um objeto 100, apenas um objeto falso, e assim por diante. A natureza imediata e única das variáveis de número inteiro está por trás da falta de operadores de pré e pós-incremento do Ruby - ou seja, você não pode fazer isso no Ruby: x = 1 x ++ # Não existe esse operador O motivo é que, devido a para a presença imediata de 1 em x, x ++ seria como 1 ++, o que significa que você mudaria o número 1 para o número 2 - e isso não faz sentido. não importa quantas variáveis sejam atribuídas. Há apenas um objeto 100, apenas um objeto falso, e assim por diante. A natureza imediata e única das variáveis de número inteiro está por trás da falta de operadores de pré e pós-incremento do Ruby - ou seja, você não pode fazer isso no Ruby: x = 1 x ++ # Não existe esse operador O motivo é que, devido a para a presença imediata de 1 em x, x ++ seria como 1 ++, o que significa que você mudaria o número 1 para o número 2 - e isso não faz sentido.