2010-06-10 35 views
0

我正在爲一個學校項目建立一個解釋器/編譯器(現在它已經變成了一個業餘愛好項目),一位教官警告我不要讓這個'this'綁定突變(他說這是非常嚴重的並且做出了巨大的交易關於它),但我從來沒有知道爲什麼這是如此......危險或不好。我很好奇爲什麼這麼糟糕。我認爲這種功能在某種程度上可能是有用的。爲什麼不允許這種結合的突變?

我想知道是否任何熟悉建築語言的人都可以告訴我'this'綁定可能導致什麼樣的突變問題,如果他們知道如果實際上允許的話可以做的很酷或有用的技巧。

做任何你知道的語言允許突變'this'嗎?

謝謝,

+0

討論也會很棒。 :) – sholsapp 2010-06-10 00:37:27

回答

2

我可以想出幾個原因爲什麼這是一個壞主意。

1)'this'是一個指向調用方法調用的對象實例的指針。在最壞的情況下允許對其進行更改可能會導致內存訪問驗證。

2)調用者期望該方法在它被調用的實例上工作。將「this」更改爲其他內容會產生意想不到的結果。

3)我想不出任何'this'的變異會允許以更標準,熟悉的方式實現的任何事情。

2

我很驚訝你的導師得到了如此的熱情。這只是語言定義的改變。我不認爲能夠改變this的含義是有用語言設計,但我認爲只要你堅持引用語義學這是一個有效的實驗。

不允許this引用除當前方法的接收方以外的任何其他主要原因是您會混淆任何曾經閱讀或編寫面向對象程序的人的期望。這不是很好的設計。

相關問題