Frage

Ich baue einen Dolmetscher / Compiler für ein Schulprojekt (na ja jetzt seine Dreh in ein Hobby-Projekt) und ein Lehrer warnte mich nicht Mutation von der zu ermöglichen, ‚dies‘ Bindung (er sagte, es sei gross und hat einen großen befassen sich darüber), aber ich habe nie gelernt, warum das so ist ... gefährlich oder schlecht ist. Ich bin sehr gespannt, warum das so schlecht ist. Ich dachte, diese Art von Funktion in einer oder anderen Weise nützlich sein könnte.

Ich frage mich, ob jemand vertraut mit dem Aufbau Sprache kann mir sagen, was für Probleme Mutation auf der ‚this‘ Bindung verursachen kann, und wenn sie wissen, jeden kühlen oder nützliche Tricks, dass man tun könnte, wenn es tatsächlich erlaubt.

Sie alle Sprachen, die Sie bewusst erlauben Mutation von ‚this‘?

Danke,

War es hilfreich?

Lösung

Ich kann aus mehreren Gründen ein, warum es wäre eine schlechte Idee sein.

1) ‚this‘ ist ein Zeiger auf die Objektinstanz, auf das der Methodenaufruf aufgerufen wird. Zulassen von Änderungen daran Speicherzugriff Validierungen im schlimmsten Fall führen könnte.

2) Der Anrufer erwartet, dass die Methode zur Arbeit auf der Instanz, auf das sie aufgerufen wurde. Ändern ‚dies‘ auf etwas anderes würde zu unerwarteten Ergebnissen führen.

3) ich nicht an nichts denken kann, dass die Mutation von ‚dies‘ würde es ermöglichen, dass nicht in einem Standard bekannte Weise erreicht werden kann.

Andere Tipps

Ich bin überrascht, Ihr Lehrer bekam so het up. Es ist nur eine Änderung in der Sprachdefinition. Ich denke nicht in der Lage zu sein, die Bedeutung von this zu ändern, ist nützlich oder gut Sprache Design, aber ich denke, solange Sie Referenz Semantik-Stick, es ist ein gültiger Versuch.

Der Hauptgrund, nicht this, damit etwas anderes als der Empfänger der aktuellen Methode beziehen ist, dass Sie werden die Erwartungen von jedermann durcheinander bringen, die jemals ein objektorientierten Programm gelesen oder geschrieben hat. das ist nicht ein gutes Design.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top