Warum verbietet Pascal den gleichen Namen für den Parameter der Methode und das Datenmitglied der Klasse?
-
20-09-2019 - |
Frage
type
TPerson = class(TObject)
name : string;
constructor create(name : string);
end;
würde Compiler -Fehler auslösen.
Ich denke ein self
oder this
Zeiger/Referenz ist für seine Klarheit gut genug. Also, was sind die Vorteile dazu?
BEARBEITEN: Eine weitere Frage: Könnten Sie zeigen, was die anderen Sprachen diese Richtlinie bereitstellen?
Lösung
Um Namen zu verhindern, kollidiert der Parametername das Klassenmitglied. Es kann einfach nicht so passieren und jeder Name ist eindeutig.
Denken Sie daran, dass Pascal a ist Bondage-und-Disziplin-Sprache; Diese sind so konzipiert, dass sie versuchen, häufige Fehler zu vermeiden.
Eine weitere Option, um das wahrgenommene Problem zu verhindern this
oder self
so dass du haben zum Präfix jedes Instanzmitglieds zugreifen mit self
.
Ich kenne jedoch keine andere Sprache mit dieser Einschränkung. Aber einige Sprachmerkmale sind in der Tat einzigartig; Überprüfte Ausnahmen beispielsweise sind auch.