Почему Pascal запрещает одно и то же имя идентификатора для параметра метода и члена данных класса?

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

  •  20-09-2019
  •  | 
  •  

Вопрос

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

запустит ошибку компилятора.

Я думаю self или же this Указатель/ссылка достаточно хороша, для его ясности. Итак, каковы преимущества этого?

РЕДАКТИРОВАТЬ: Еще один вопрос, не могли бы вы показать, какие другие языки развертывают эту политику?

Это было полезно?

Решение

Чтобы предотвратить столкновения имени, где имя параметра будет тенить члена класса. Это просто не может случиться так, и каждое имя однозначно.

Помните, что Паскаль Язык с рабством и дискорицей; Они предназначены для того, чтобы попытаться предотвратить общие ошибки.

Еще один вариант предотвращения воспринимаемой проблемы - это то, что делает Python: мандата квалификации членов экземпляра с помощью this или же self так что вы имеют Префикс каждый доступ к члену экземпляра с self.

Я не знаю ни одного другого языка с этим ограничением. Но некоторые языковые особенности действительно уникальны; Проверенные исключения, например, тоже.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top