Perché il pascal vietare stesso nome identificativo per il parametro del metodo e membro di dati di classe?

StackOverflow https://stackoverflow.com/questions/2072883

  •  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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top