Perché il pascal vietare stesso nome identificativo per il parametro del metodo e membro di dati di classe?
-
20-09-2019 - |
Domanda
type
TPerson = class(TObject)
name : string;
constructor create(name : string);
end;
farebbe scattare errore di compilazione.
Credo che un self
o this
puntatore / riferimento è abbastanza buono, per la sua chiarezza. Quindi, quali sono i vantaggi di farlo?
Modifica :? Ancora una domanda, si potrebbe mostrare quali sono le altre lingue che implementano questa politica
Soluzione
Per evitare scontri di nomi in cui il nome del parametro sarebbe l'ombra del membro della classe. Semplicemente non può accadere in questo modo e ogni nome è inequivocabile.
Si ricorda che Pascal è un bondage-and-disciplina lingua ; quelli sono progettati per cercare di evitare gli errori più comuni.
Un'altra opzione per evitare che il problema percepito è quello che fa Python: mandato la qualifica di membri di istanza con this
o self
in modo che sono come prefisso ogni accesso membro di istanza con self
Non so di qualsiasi altra lingua con tale restrizione, però. Ma alcune caratteristiche del linguaggio sono davvero unici; eccezioni controllate per esempio sono, anche.