Pascal이 Method의 매개 변수 및 클래스 데이터 구성원에 대해 동일한 식별자 이름을 금지하는 이유는 무엇입니까?
-
20-09-2019 - |
문제
type
TPerson = class(TObject)
name : string;
constructor create(name : string);
end;
컴파일러 오류를 트리거합니다.
나는 생각한다 self
또는 this
포인터/참조는 명확성을 위해 충분합니다. 그렇다면 그렇게하는 장점은 무엇입니까?
편집하다: 한 가지 더 질문,이 정책을 배치하는 다른 언어는 무엇인지 보여줄 수 있습니까?
해결책
매개 변수 이름이 클래스 멤버를 섀도 킹하는 곳에서 이름 충돌을 방지합니다. 이런 식으로 일어날 수 없으며 모든 이름은 모호하지 않습니다.
파스칼은 속박 및 훈련 언어; 그것들은 일반적인 오류를 방지하도록 설계되었습니다.
인식 된 문제를 방지하는 또 다른 옵션은 Python이하는 일입니다. 인스턴스 멤버의 자격 this
또는 self
그래서 당신을 위해 가지다 모든 인스턴스 멤버 액세스를 접두사합니다 self
.
그래도 그 제한이있는 다른 언어는 모릅니다. 그러나 일부 언어 기능은 실제로 독특합니다. 예를 들어 점검 된 예외도 마찬가지입니다.
제휴하지 않습니다 StackOverflow