Pascal이 Method의 매개 변수 및 클래스 데이터 구성원에 대해 동일한 식별자 이름을 금지하는 이유는 무엇입니까?

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