0

我正在为一个学校项目构建一个解释器/编译器(现在它变成了一个爱好项目),一位讲师警告我不要允许“this”绑定的突变(他说这很恶心,并且对此做了很多事情) 但我从来不知道为什么这会如此......危险或糟糕。我很好奇为什么会这么糟糕。我认为这种功能可能会以某种方式有用。

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

您知道的任何语言是否允许“this”的变异?

谢谢,

4

2 回答 2

2

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

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

2) 调用者期望该方法在调用它的实例上工作。将“this”更改为其他内容会产生意想不到的结果。

3)我想不出任何“this”的突变会允许以更标准、更熟悉的方式实现的事情。

于 2010-06-10T01:19:30.667 回答
2

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

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

于 2010-06-10T02:03:22.023 回答