2017-11-27 17 views
0

닷넷에서는 점진적으로 인터페이스를 구현하는 것이 일반적인 개발 단계이므로 처음 몇 발달 동안 모든 인터페이스 기능이 구현되는 것은 아닙니다. 이러한 예는 C#으로 같을 것이다 :구현되지 않은 함수를 남겨 두는 것과 같은 Ada와 동일한 기능이 있습니까?

public string FutureGetString() 
{ 
    // Not developed yet. 
    throw new NotImplementedException(); 
} 

그러나, 나는 에이다에서 해당 작업을 수행하는 방법을 알아 냈하지 않았습니다. 몇 가지 기능을 사용하여 문을 열어두고 패키지 사양에 대한 본문을 개발하고 싶습니다. 즉시 예외를 던질 수있는 방법이 있습니까? 내가 궁금했던

function NotImplemented (Input : Integer) return Boolean is 
begin 
    raise Program_Error; 
    return NotImplemented (Input); 
end; 

: 바로 지금, 내가 나에게 (수석 AdaCore 엔지니어)이 권장 missing "return" statement in function body

function NotImplemented (Input : Integer) return Boolean is 
begin 
    raise Program_Error; 
end; 

답변

5

은 내가 본 컴파일러 오류를 제공하는, 다음이 컴파일러가 무한 재귀에 대해 경고할지 여부는 알 수 없습니다.

+0

그러나 일부 버전에서는 죽은 코드 인 IIRC에 대해 경고합니다. –

4
function Not_Implemented (Input : in Integer) return Boolean is 
    pragma Unreferenced (Input); 
begin 
    pragma Compile_Time_Warning (True, "Not_Implemented has not been implemented yet."); 
    return raise Program_Error with "Not_Implemented has not been implemented yet."; 
end Not_Implemented; 
+0

제 컴파일러가 전혀 만족스럽지 않습니다. '함수에서 반환 된 표현이 없습니다.' – theMayer

+0

'raise expressions'가 2016 년 2 월에 발행 된 Technical Corrigendum 1에 의해 Ada 2012에 추가되었으므로 최신 컴파일러 만이이를 지원합니다. – egilhh

+0

그 코드는 Ada2012 기능 인 raise expression ([ARM 11.3 (2.1)]을 사용합니다 (http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-11-3.html#p2.1)), 모든 유형 ([(3.2)] (http : // www. ad-auth.org/standards/rm12_w_tc1/html/RM-11-3.html#p3.2)) –