In der Informatik definiert eine Annotation vom Typ oder die Ein- und Ausgänge für eine Funktion, ein Unterprogramm oder eine Methode. Eine Typensignatur umfasst die Anzahl der Argumente, die Typen der Argumente und die Reihenfolge der in einer Funktion enthaltenen Argumente. Eine Typensignatur wird normalerweise während der Überladungsauflösung verwendet, um die richtige Definition einer Funktion auszuwählen, die unter vielen überladenen Formularen aufgerufen werden soll.
Beispiele [ edit ]
C / C ++ [ edit ]
In 19659006] allgemein als Funktionsprototyp bekannt. In C / C ++ spiegelt eine Funktionsdeklaration ihre Verwendung wider. Zum Beispiel einen Funktionszeiger, der aufgerufen würde als:
char c ; doppelt d ; int retVal = ]) ( c d ); hat die Unterschrift:
Erlang [ edit ]
In Erlang können Typunterschriften optional deklariert werden als:
- spec ( Funktionsname ( type1 (), type2 (19659016] ...) . -> out_type ()). Zum Beispiel:
- spec ( is_even ( Nummer ()) - Boolean () [ edit ] Eine Typensignatur in der Haskell-Programmiersprache wird im Allgemeinen in folgendem Format geschrieben:
functionName :: arg1Type -> arg2Type -> ... -> argNType
Beachten Sie diesen Typ Das Ergebnis kann als alles über das erste gelieferte Argument hinaus betrachtet werden. Dies ist eine Folge des Currying, das durch die Unterstützung von Haskell für erstklassige Funktionen ermöglicht wird. Diese Funktion erfordert zwei Eingänge, bei denen ein Argument angegeben wird und die Funktion "curried" ist, um eine Funktion für das nicht angegebene Argument zu erzeugen. So unter Berufung auf f x bezeichnet, wobei f :: a → 19659008] b - c ergibt eine neue Funktion f2 :: b -> c die als f2 b c bezeichnet werden kann .
Die tatsächlichen Typspezifikationen können aus einem tatsächlichen Typ wie Integer oder einer allgemeinen Typvariablen bestehen, die in parametrischen polymorphen Funktionen verwendet wird, wie a oder ] b oder anyType . So können wir so etwas schreiben: functionName :: a -> a -> ... - a
Da Haskell Funktionen mit höherer Ordnung unterstützt, können Funktionen als Argumente übergeben werden. Dies wird geschrieben als: functionName :: ( a -> a ) - a
Diese Funktion übernimmt eine Funktion mit der Typensignatur a -> a und gibt Daten vom Typ a aus.
Java [ edit ]
In der virtuellen Java-Maschine werden interne Typunterschriften verwendet, um Methoden und Klassen auf der Ebene des virtuellen Maschinencodes zu identifizieren.
Beispiel: Die Methode String String . Teilzeichenfolge ( int int int als Ljava / lang / String . Unterkette ( II 19659018] lang / String . Die Signatur der Methode main () sieht folgendermaßen aus:
public static void main ( String args )
und 19659024] Form von Lsome / Paket / Main / Main : [ Ljava / ] / String ;) V
Die Methodensignatur für die Methode main () enthält drei Modifikatoren:
publiczeigt an, dass die Methodemain ()von jedem Objekt aufgerufen werden kann.staticzeigt an, dass die Methodemain ()eine Klasse ist Methode.voidzeigt an, dass die Methodemain ()keinen Rückgabewert hat.
Signatur [ edit
Eine Funktionssignatur besteht aus des Funktionsprototyps. Es gibt die allgemeinen Informationen zu einer Funktion wie Name, Gültigkeitsbereich und Parameter an. Viele Programmiersprachen verwenden Namensverstümmelung, um weitere semantische Informationen von den Compilern an die Linker weiterzugeben. Neben dem Mangeln gibt es einen Überschuss an Informationen in einer Funktionssignatur (die intern bei den meisten Compilern gespeichert wird), die nicht ohne weiteres verfügbar ist, jedoch abgerufen werden kann. [1]
Verständnis des Begriffs a Die Funktionssignatur ist ein wichtiges Konzept für alle Informatikstudien.
- Moderne Objektorientierungstechniken verwenden Schnittstellen, bei denen es sich im Wesentlichen um Vorlagen aus Funktionssignaturen handelt.
- C / C ++ verwendet Funktionsüberladung mit verschiedenen Signaturen.
Die Praxis der Mehrfachvererbung erfordert die Berücksichtigung der Funktionssignaturen unvorhersehbare Ergebnisse.
Die Theorie der Informatik und insbesondere das Konzept des Polymorphismus verwenden vielfach das Konzept der Funktionssignatur.
In der Programmiersprache C entspricht die Signatur in etwa der Prototypdefinition.
Der Begriff "Signatur" kann in der Informatik andere Bedeutungen haben. Zum Beispiel:
- Dateisignaturen können den Inhalt einer Datei identifizieren oder überprüfen.
- Datenbanksignaturen können das Schema oder eine Version einer Datenbank identifizieren oder überprüfen.
- In der ML-Familie von Programmiersprachen wird "Signatur" als verwendet ein Schlüsselwort, das sich auf ein Konstrukt des Modulsystems bezieht, das die Rolle einer Schnittstelle spielt.
Methodensignatur [ edit ]
In der Computerprogrammierung, insbesondere der objektorientierten Programmierung, einer Methode wird üblicherweise durch seine eindeutige Methodensignatur identifiziert, die normalerweise den Methodennamen und die Anzahl, Typen und Reihenfolge seiner Parameter enthält. [2] Eine Methodensignatur ist der kleinste Typ einer Methode.
Beispiele [ edit ]
C / C ++ edit ]
die Anzahl und den Typ seiner Parameter, es ist jedoch möglich, einen letzten Parameter zu haben, der aus einem Array von Werten besteht:
int printf ( const char * ... ) Die Manipulation dieser Parameter kann durch durchgeführt werden unter Verwendung der Routinen im Standardbibliothekskopf [[stdargh| [ stdarg . h ].
C # [ edit ]
Ähnlich der C-Syntax sieht C # als Methodensignatur seinen Namen und die Anzahl und den Typ seiner Parameter, wobei der letzte Parameter ein Array sein kann von Werten: [3]
void Add ( out int sum params int ); [...] Add ( out sum 3 5 ] 11 - 1 ); // sum == 25 Java [ edit
In der Java Programmiersprache ist eine Methodensignatur der Methodenname und die Anzahl, der Typ und die Reihenfolge seiner Parameter. Rückgabetypen und ausgelöste Ausnahmen gelten nicht als Teil der Methodensignatur.
Methodenname ( Parameter ) {...}; break ; ;
Zum Beispiel haben die folgenden zwei Methoden unterschiedliche Signaturen:
doSomething ( String [] und ); doSomething String 19659008] ] Die folgenden drei Methoden haben dieselben Signaturen und werden als identisch betrachtet, da sich nur der Rückgabewert unterscheidet. Der Name des Parameters ist nicht Teil der Methodensignatur und wird vom Compiler ignoriert, um die Eindeutigkeit der Methode zu überprüfen. int doSomething ( int und ) String doSomething (19659139909909909909909909909909909909909909909909909909697909909909909909909909909909909909909909697699909909909909909909909909999909909999909909697697699697697697697697697) ] int doSomething ( int z ) java 0999099099099099999999999999999999999999999099999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999099999999999999999999999999999999 -C [ edit ] In der Programmiersprache Objective-C werden Methodensignaturen für ein Objekt in der Interface-Header-Datei deklariert. Zum Beispiel,
- ( id ) initWithInt: ( int ) value ; initWithInt das ein allgemeines Objekt (eine id ) zurückgibt und ein ganzzahliges Argument verwendet. Objective-C erfordert nur, dass ein Typ in einer Signatur explizit ist, wenn der Typ nicht id ist; Diese Unterschrift ist gleichwertig: - initWithInt: ( int ) value ;
References [ edit
No comments:
Post a Comment