В Ruby имена переменных не являются объектами.Зачем? - PullRequest
1 голос
/ 21 февраля 2012

Об этом говорится на слайде 6 из 10 вещей, которые каждый Java-программист должен знать о разговоре по Ruby .

Теперь я рассмотрел некоторые ответы, и общее мнение состоит в том, что все, что имеет значение, а не просто указатель, является объектом.Я смущен этим.Если a = 1, a будет использовать методы совместно с 1, и фактически они будут иметь одинаковые object_id.Как сказать "а это объект" не точно?

1 Ответ

4 голосов
/ 21 февраля 2012

То, что говорит слайд, верно: переменные не являются объектами. Однако второе утверждение здесь - «что-либо со значением, а не просто указатель, является объектом» - даже не имеет смысла в контексте Ruby, который не имеет «простых указателей», отличных от «вещей со значением / объекты».

Дело в том, что переменная a не использует методы совместно с объектом 1. Это, конечно, не то же самое, что 1, потому что в противном случае, если бы вы позже написали a = 2, вы бы полностью стерли цифру 1! Переменная - это просто место, которое содержит ссылку на объект 1. Вы не можете общаться с этим местом, как с объектом - например, как вы заметили, переменные не имеют четких object_id с. Единственная вещь, которую вы можете сделать с переменной - это поговорить с объектом, на который она ссылается, и переназначить ее со ссылкой на другой объект. Сама переменная не является объектом, это просто место для хранения ссылки на объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...