Por que Pascal proíbe o mesmo nome de identificador para o parâmetro do Method e o membro de dados da classe?
-
20-09-2019 - |
Pergunta
type
TPerson = class(TObject)
name : string;
constructor create(name : string);
end;
acionaria o erro do compilador.
Eu acho que um self
ou this
O ponteiro/referência é bom o suficiente, para sua clareza. Então, quais são as vantagens de fazer isso?
EDITAR: Mais uma pergunta, você poderia mostrar quais são os outros idiomas que implantam essa política?
Solução
Para evitar confrontos de nome em que o nome do parâmetro sombreia o membro da classe. Isso simplesmente não pode acontecer dessa maneira e todo nome é inequívoco.
Lembre -se de que Pascal é um linguagem de escravidão e disciplina; Eles foram projetados para tentar evitar erros comuns.
Outra opção para impedir o problema percebido é o que Python faz: exigir a qualificação dos membros da instância com this
ou self
para que você tenho Para prefixar todos os membros do membro de instância com acesso com self
.
No entanto, não conheço nenhum outro idioma com essa restrição. Mas algumas características da linguagem são realmente únicas; Exceções verificadas, por exemplo, também são.