質問

私は学校のプロジェクト (今では趣味のプロジェクトになりつつあります) 用にインタプリタ/コンパイラを構築しているのですが、講師から「this」バインディングの変更を許可しないように警告されました (彼はそれがひどいと言って、それについて大々的に騒ぎました) )しかし、なぜそうなるのかはわかりませんでした...危ないとか悪いとか。なぜこれがそんなに悪いのか非常に興味があります。この種の機能は何らかの形で役立つかもしれないと思いました。

言語の構築に詳しい人が「this」バインディングでの突然変異がどのような問題を引き起こす可能性があるか、またそれが実際に許可された場合に実行できるクールで便利なトリックを知っているかどうかを教えてもらえないかと思います。

あなたが知っている言語で「this」の突然変異が許可されているものはありますか?

ありがとう、

役に立ちましたか?

解決

私はそれが悪いアイデアだろういくつかの理由を考えることができます。

1)「これは」メソッド呼び出しが起動されたオブジェクト・インスタンスへのポインタです。それへの変更を許可すると、最悪の場合には、メモリアクセスの検証につながる可能性があります。

2)発信者は、それが呼び出されたインスタンス上で動作する方法を期待します。何か他に「この」変更すると、予期しない結果を生じるであろう。

3)私は「これは」それは、より標準的な、身近な方法で達成することができない可能になる。

の何でもその突然変異を考えることはできません

他のヒント

先生がそんなに激怒したのには驚きました。それは言語定義の変更にすぎません。の意味を変えることはできないと思います this役に立つ または 良い 言語設計ですが、参照セマンティクスに固執する限り、それは有効な実験だと思います。

許可しない主な理由 this 現在のメソッドの受信者以外のものを参照することは、 オブジェクト指向プログラムを読んだり書いたりしたことのある人の期待を混乱させるでしょう。 それは良いデザインではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top