Pourquoi ne pascals interdit même nom d'identifiant pour le paramètre de la méthode et le membre de données de classe?

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

  •  20-09-2019
  •  | 
  •  

Question

type
    TPerson = class(TObject)
        name : string;
        constructor create(name : string);
    end;

déclencherait erreur du compilateur.

Je pense qu'un pointeur self ou this / référence est assez bon, pour sa clarté. Alors, quels sont les avantages de le faire?

EDIT : Une autre question, pourriez-vous montrer quelles sont les autres langues qui déploient cette politique

Était-ce utile?

La solution

Pour éviter les conflits de noms où le nom du paramètre serait le shadow membre de la classe. Il ne peut pas se produire de cette façon et chaque nom est sans ambiguïté.

Rappelez-vous que Pascal est un langue bondage et discipline ; ceux-ci sont conçus pour tenter d'éviter les erreurs courantes.

Une autre option pour éviter le problème perçu est ce qui fait Python: mandat la qualification des membres d'instance avec this ou self afin que vous Vous pour préfixe tous les accès aux membres de l'instance avec self

.

Je ne sais pas d'une autre langue avec cette restriction, cependant. Mais certaines caractéristiques linguistiques sont en effet unique; exceptions vérifiées par exemple, sont aussi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top