2017-11-27 3 views
0

In .Net ist es in der Entwicklung üblich, eine Schnittstelle schrittweise zu implementieren, so dass nicht alle Schnittstellenfunktionen für die ersten Entwicklungsrunden implementiert werden. Ein solches Beispiel, wie dies in C# aussehen:Gibt es ein Ada-Äquivalent zum Verlassen einer Funktion Nicht implementiert?

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

Allerdings habe ich nicht herausgefunden, wie das Äquivalent in Ada zu tun. Ich möchte den Körper für eine Paketspezifikation entwickeln, während ich die Tür auf ein paar Funktionen offen lasse. Gibt es eine Möglichkeit, eine Ausnahme sofort zu werfen? Im Moment habe ich folgendes, was gibt mir einen Compiler-Fehler missing "return" statement in function body

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

Antwort

5

ich gesehen habe dies empfohlen (von einem leitenden Ingenieure AdaCore):

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

Ich frage mich, hatte ob der Compiler vor unendlicher Rekursion warnen könnte, aber nein.

+0

Aber einige Versionen warnen vor totem Code, 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

Mein Compiler scheint überhaupt nicht damit zufrieden zu sein - "fehlender Ausdruck als Antwort auf die Funktion". – theMayer

+0

'Aussetzung Ausdrücke 'wurden Ada 2012 von der Technical Corrigendum 1, veröffentlicht im Februar 2016, so dass nur aktuelle Compiler unterstützen diese – egilhh

+0

Dieser Code verwendet eine Ada2012-Funktion, eine Erhöhung Ausdruck ([ARM 11.3 (2.1)] (http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-11-3.html#p2.1)), die einen beliebigen Typ haben können ([(3.2)] (http: // www. ada-auth.org/standards/rm12_w_tc1/html/RM-11-3.html#p3.2)) –

Verwandte Themen