2010-06-10 2 views
0

Я строю интерпретатор/компилятор для школьного проекта (ну теперь его превращение в проект хобби), и инструктор предупредил меня, чтобы я не допускал мутации «этой» привязки (он сказал, что это грубо и сделано огромной сделкой об этом), но я никогда не узнал, почему это так ... опасно или плохо. Мне очень любопытно, почему это так плохо. Я решил, что такая функция может быть так или иначе полезной.Почему бы не разрешить мутацию этого связывания?

Мне интересно, может ли кто-нибудь, знакомый со строительными языками, сказать, какие проблемы могут возникнуть при мутации в этой «привязке», и если они знают какие-либо интересные или полезные трюки, которые можно было бы сделать, если бы это было разрешено ,

Есть ли какие-либо языки, о которых вы знаете, допускаете мутацию «этого»?

Спасибо,

+0

Обсуждение будет отличным. :) – sholsapp

ответ

2

Я могу назвать несколько причин, почему это было бы неплохо.

1) 'this' является указателем на экземпляр объекта, на который вызывается вызов метода. Разрешение изменений может привести к проверке доступа к памяти в худшем случае.

2) Вызывающий ожидает, что метод будет работать над экземпляром, на который он был вызван. Изменение «этого» на что-то другое приведет к неожиданным результатам.

3) Я не могу думать ни о чем, что мутация «этого» позволила бы достичь этого более стандартным, знакомым способом.

2

Я удивлен, что ваш инструктор так поднялся. Это просто изменение в определении языка. Я не думаю, что возможность изменить значение this is Полезно или хорошее язык дизайн, но я думаю, что до тех пор, пока вы придерживаетесь ссылочной семантики, это действительный эксперимент.

Основная причина, по которой не разрешать this ссылаться на что-либо, кроме получателя текущего метода, заключается в том, что вы будете смешивать ожидания тех, кто когда-либо читал или писал объектно-ориентированную программу. Это не хороший дизайн.

 Смежные вопросы

  • Нет связанных вопросов^_^