0

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

言語の構築に精通している人なら誰でも、「this」バインディングのミューテーションがどのような問題を引き起こす可能性があるのか​​、そして実際に許可された場合に実行できるクールで便利なトリックを知っているのだろうか。

あなたが知っている言語は「これ」の突然変異を許可しますか?

ありがとう、

4

2 に答える 2

2

それが悪い考えになる理由はいくつか考えられます。

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

2)呼び出し元は、メソッドが呼び出されたインスタンスで機能することを期待しています。'this'を別のものに変更すると、予期しない結果が発生します。

3)「これ」の突然変異が、より標準的で馴染みのある方法で達成できないことを可能にするものは何も考えられません。

于 2010-06-10T01:19:30.667 に答える
2

私はあなたのインストラクターがそんなに大騒ぎしたことに驚いています。これは、言語定義の変更にすぎません。の意味を変更できることthis有用または優れた言語設計ではないと思いますが、参照セマンティクスに固執する限り、それは有効な実験だと思います。

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

于 2010-06-10T02:03:22.023 に答える