균일 함수 호출 구문
Uniform Function Call Syntax균일 함수 호출 구문(UFCS) 또는 균일 호출 구문(UCS) 또는 때로는 범용 함수 호출 구문은 (객체 지향 프로그래밍에서와 같이) 메서드 호출 구문을 사용하여 모든 기능을 호출할 수 있도록 하는 D와 Nim의 프로그래밍 언어 기능이며, 수신기를 첫 번째 매개 변수로, 주어진 인수를 remai로 사용한다.닝 [1]매개변수UFCS는 기능 호출을 체인으로[2] 할 때(파이프와 유사한 동작 또는 일련의 표현을 통해 값을 전달하기 위해 기능 언어로 사용할 수 있는 다양한 전용 연산자) 특히 유용하다.그것은 자유기능이 일부 다른 언어의 확장 방법과 유사한 역할을 채울 수 있도록 한다.메서드 호출 구문의 또 다른 이점은 IDE의 "점 자동 완성"과 함께 사용하는데, IDE는 문맥에 따라 사용 가능한 함수 목록을 표시하기 위해 형식 정보를 사용한다.프로그래머가 논쟁으로 시작할 때, 잠재적으로 적용할 수 있는 기능들의 집합이 크게 좁혀져 발견성을 돕는다.[3]
예
님 프로그래밍 언어
타자를 치다 벡터 = 터플[x, y: 인트로] 생식을 하다덧셈을(a, b: 벡터): 벡터 = (a.x + b.x, a.y + b.y) 하게 하다 v1 = (x: -1, y: 4) v2 = (x: 5, y: -2) # 다음의 모든 것이 정확하다. v3 = 덧셈을(v1, v2) v4 = v1.덧셈을(v2) v5 = v1.덧셈을(v2).덧셈을(v4) D 프로그래밍 언어
수입하다 찌꺼기.스타디오; 인트로 맨 처음의(인트로[] arr) { 돌아오다 arr[0]; } 인트로[] 덧셈을 하다(인트로[] arr) { 인트로[] 결과; 한 사람 한 사람당 (가치를 매기다; arr) { 결과 ~= 가치를 매기다 + 1; } 돌아오다 결과; } 공허하게 하다 본래의() { 자동차로 a = [0, 1, 2, 3]; // 다음 사항이 모두 올바르고 동등함 인트로 b = 맨 처음의(a); 인트로 c = a.맨 처음의(); 인트로 d = a.맨 처음의; // 체인 인트로[] e = a.덧셈을 하다().덧셈을 하다(); } C++ 제안
C++ 표준화 초기부터 회원기능의 통일과 자유기능 호출 구문에 대한 제안이 논의되어 왔다.Glassborow(2004)는 특별히 주석이 달린 자유 함수를 회원 함수 표기법으로 호출할 수 있도록 하는 Uniform Calling Syntax(UCS)를 제안했다.[4]비야른 스트루스트루프와[5] 허브 서터가 C++를 추가하여 [3]자유 기능 작성과 회원 기능 간의 애매한 결정을 줄이고 템플리트 코드 작성을 단순화하기 위해 (2016년 기준) 더 최근에 제안되었다.많은 프로그래머들은 회원 기능 구문(예: 회원 기능을 나열하는 "점 자동 완성")의 이점을 얻기 위해 회원 기능을 쓰려고 하지만,[6] 이는 클래스 간의 과도한 결합으로 이어진다.[7]
용어의 녹 사용
2018년까지 실제로 적격/명확한 경로 구문과 가장 일반적으로 완전 적격 경로 구문을 언급할 때 이 용어를 사용하는 것이 일반적이었다.: 동일한 구조에서 동일한 방법을 정의하는 여러 특성을 가질 수 있기 때문에, 어떤 특성을 사용해야 하는지 모호하게 하는 메커니즘이 필요하다.
회원기능은 자격(이름차단) 경로를 통해 자유기능으로도 사용할 수 있다.
UFCS라는 용어는 자유 함수로 (이름보다 우선) 메소드를 사용할 수 있지만 자유 함수를 메소드로 사용할 수는 없기 때문에 이러한 용도에 맞지 않는다.
참고 항목
- 특성(컴퓨터 프로그래밍)
- 인터페이스(컴퓨터 프로그래밍)
- 이동(프로그래밍 언어), 메서드에 대한 철학이 보다 열린 다른 언어
- 느슨한 커플링
- 덕 타이핑
- 메서드 체인
참조
- ^ "Functions - D Programming Language". Dlang.org. Retrieved 1 October 2017.
- ^ "Programming in D - Universal Function Call Syntax (UFCS)". Ddili.org. Retrieved 1 October 2017.
- ^ a b ""Unified Call Syntax"" (PDF). Isocpp.org. Retrieved 1 October 2017.
- ^ Francis Glassborow (2 May 2004). "N1585: Uniform Calling Syntax (Re-opening public interfaces)" (PDF). Retrieved 17 December 2018.
- ^ ""UFCS proposal"" (PDF). Open-std.org. Retrieved 1 October 2017.
- ^ "using intellisense". Msdn.microsoft.com. Retrieved 1 October 2017.
- ^ "How Non-Member Functions improve encapsulation". Drdobbs.com. Retrieved 1 October 2017.