为什么不允许这种绑定的突变?

时间:2010-06-10 00:03:00

标签: programming-languages object mutation

我正在为一个学校项目建立一个翻译/编译器(现在它变成了一个业余爱好项目),一位教练警告我不要让“这个”绑定变异(他说它很粗糙并且变得很大处理它)但我从来没有知道为什么这样......危险或坏。我很好奇为什么这么糟糕。我认为这种功能在某种程度上可能有用。

我想知道是否有人熟悉构建语言可以告诉我'this'绑定可能导致什么样的问题突变,以及他们是否知道如果实际允许的话可以做任何酷或有用的技巧。

您知道的任何语言是否允许'this'突变?

谢谢,

2 个答案:

答案 0 :(得分:2)

我可以想到几个原因,这可能是一个坏主意。

1)'this'是一个指向调用方法调用的对象实例的指针。允许对其进行更改可能会导致最坏情况下的内存访问验证。

2)调用者希望该方法适用于调用它的实例。将“this”更改为其他内容会产生意外结果。

3)我想不出任何“这个”突变会导致无法以更标准,更熟悉的方式实现的任何内容。

答案 1 :(得分:2)

我很惊讶你的导师得到了如此高涨。这只是语言定义的变化。我不认为能够改变this的含义是有用的良好的语言设计,但我认为只要你坚持引用语义它就是一个有效的实验。

不允许this引用除当前方法的接收者之外的任何内容的主要原因是你会混淆任何阅读或编写面向对象程序的人的期望。 这不是好设计。