Geben Sie Signatur ein

Im Informatik, a Geben Sie Signatur ein oder Geben Sie Annotation ein definiert die Eingänge und Ausgänge für eine Funktion, Unterroutine oder Methode. Eine Typsignatur enthält die Anzahl, Typen und Reihenfolge der Argumente, die durch eine Funktion enthalten sind. Eine Typsignatur wird normalerweise während verwendet Überlast Auflösung für die Auswahl der korrekten Definition einer Funktion, die unter vielen überlasteten Formen aufgerufen wird.

Beispiele

C/C ++

Im C und C ++Die Typ Signatur ist erklärt durch was allgemein bekannt als a Funktionsprototyp. In C/C ++ eine Funktion Die Erklärung spiegelt ihre Verwendung wider; Zum Beispiel a Funktionszeiger mit der Signatur (int)(char, double) würde als:

verkohlen c; doppelt d; int Retval = (*fptr) (c, d); 

Erlang

Im Erlang, Typ Signaturen können optional deklariert werden, wie:

-Spezifikation(Funktionsname(Typ 1(),, Typ 2(),, ...) -> out_type()). 

Zum Beispiel:

-Spezifikation(is_even(Nummer()) -> Boolesche()).}} 

Haskell

Eine Typsignatur in Haskell Nimmt im Allgemeinen das folgende Formular an:

Funktionsname :: arg1type -> arg2Type -> ... -> argntype 

Beachten Sie, dass der Typ des Ergebniss als alles über das erste angegebene Argument angesehen werden kann. Dies ist eine Folge von Currying, was durch Haskells Unterstützung für ermöglicht wird erstklassige Funktionen; Diese Funktion erfordert zwei Eingänge, bei denen ein Argument geliefert wird und die Funktion "canriert" wird, um eine Funktion für das nicht gelieferte Argument zu erzeugen. So rufen f x, wo f :: a -> b -> cErgibt eine neue Funktion f2 :: b -> c das kann genannt werden f2 b produzieren c.

Die tatsächlichen Typspezifikationen können aus einem tatsächlichen Typ bestehen, wie z. Integeroder ein General Typ Variable das wird in verwendet Parametrische polymorph Funktionen, wie zum Beispiel a, oder b, oder anyType. So können wir so etwas schreiben wie:functionName :: a -> a -> ... -> a

Da Haskell unterstützt Funktionen höherer Ordnung, Funktionen können als Argumente übergeben werden. Dies ist geschrieben als:functionName :: (a -> a) -> a

Diese Funktion nimmt eine Funktion mit Typ Signatur auf a -> a und gibt Daten vom Typ zurück a aus.

Java

In dem Java virtuelle Maschine, interne Typsignaturen werden verwendet, um Methoden und Klassen auf der Ebene des virtuellen Maschinencodes zu identifizieren.

Beispiel: Die Methode String String.substring(int, int) ist in Bytecode wie Ljava/lang/String.substring(II)Ljava/lang/String;.

Die Signatur der main Methode sieht so aus:

Öffentlichkeit statisch Leere hauptsächlich(Saite[] Args); 

Und im zerlegten Bytecode nimmt es die Form von an Lsome/package/Main/main:([Ljava/lang/String;)V

Die Methodensignatur für die main() Die Methode enthält drei Modifikatoren:

  • public zeigt an, dass die main() Methode kann von jedem Objekt aufgerufen werden.
  • static zeigt an, dass die main() Methode ist eine Klassenmethode.
  • void zeigt an, dass die main() Die Methode hat keinen Rückgabewert.

Unterschrift

Eine Funktionssignatur besteht aus dem Funktionsprototyp. Es gibt die allgemeinen Informationen über eine Funktion wie den Namen, den Umfang und die Parameter an. Viele Programmiersprachen verwenden Nennen Sie Mangling um mehr semantische Informationen von den Compilern an die Linker weiterzugeben. Zusätzlich zum Mangling gibt es einen Überschuss an Informationen in einer Funktionssignatur (intern an die meisten Compiler gespeichert), auf die nicht ohne weiteres verfügbar ist, aber möglicherweise zugegriffen werden kann.[1]

Das Verständnis des Begriffs einer Funktionssignatur ist ein wichtiges Konzept für alle Informatikstudien.

  • Moderne Objektorientierungstechniken verwenden von Schnittstellen, die im Wesentlichen Vorlagen aus Funktionssignaturen sind.
  • C ++ verwendet Funktion Überlastung mit verschiedenen Unterschriften.

Die Praxis von Mehrfacherbe erfordert die Berücksichtigung der Funktionssignaturen, um unvorhersehbare Ergebnisse zu vermeiden.

Informatik Theorie und das Konzept von Polymorphismus Nutzen Sie insbesondere das Konzept der Funktionssignatur.

In der C -Programmiersprache entspricht die Signatur in etwa der Prototypdefinition.

Der Begriff "Signatur" kann andere Bedeutungen in der Informatik tragen:

  • Dateisignaturen kann den Inhalt einer Datei identifizieren oder überprüfen.
  • Datenbanksignaturen können das Schema oder eine Version einer Datenbank identifizieren oder überprüfen.
  • In dem Ml Familie von Programmiersprachen, "Signatur" wird als Schlüsselwort verwendet, das sich auf ein Konstrukt des Modulsystems bezieht, das die Rolle von einem spielt Schnittstelle.

Methodensignatur

Im Computerprogrammierung, besonders Objekt orientierte Programmierung, a Methode wird üblicherweise durch seine einzigartige Identifizierung identifiziert Methodensignatur, die normalerweise den Methodennamen und die Nummer, die Typen und die Reihenfolge seiner enthält Parameter.[2] Eine Methodensignatur ist die kleinste Typ einer Methode.

Beispiele

C/C ++

In C/C ++ ist die Methodensignatur der Methodenname und die Nummer und der Typ seiner Parameter, aber es ist möglich, einen letzten Parameter zu haben, der aus einem Array von Werten besteht:

int printf(Const verkohlen*, ... ); 

Die Manipulation dieser Parameter kann durch die Verwendung der Routinen im Standardbibliotheksheader durchgeführt werden .

C#

Ähnlich der Syntax von C, Methodensignaturen in C# bestehen aus einem Namen und der Nummer und dem Typ seiner Parameter, wobei der letzte Parameter ein Array von Werten sein kann:[3]

Leere Hinzufügen(aus int Summe, Parameter int[] Wert); [...] Hinzufügen(aus Summe, 3, 5, 7, 11, -1);  // sum == 25 

Java

Im JavaEine Methodensignatur besteht aus einem Namen und der Nummer, dem Typ und der Reihenfolge seiner Parameter. Rückgabetypen und geworfene Ausnahmen gelten weder als Teil der Methodensignatur, noch sind die Namen von Parametern. Sie werden vom Compiler zur Überprüfung der Eindeutigkeit der Methode ignoriert.

Die Methodensignaturen unterscheiden überlastete Methoden (Methoden mit demselben Namen) in einer Klasse. Rückgabetypen sind nicht in der Überlastung enthalten. Es sollten nur Methodensignaturen verwendet werden, um überlastete Methoden zu unterscheiden.[4]

Beispielsweise haben die folgenden zwei Methoden unterschiedliche Signaturen:

Leere etwas tun(Saite[] x); // Dosen (String []) Leere etwas tun(Saite x);  // Dosen (String) 

Die folgenden zwei Methoden haben alle die gleichen Unterschriften:

int etwas tun(int x);  // Dosen (int) Leere etwas tun(int y) Würfe Ausnahme; // Dosen (int) 

Julia

Im Julia, Funktionssignaturen nehmen das folgende Formular an:

Kommission(Verkauf::Int, Bewertung::Float64)::Float64 

Die Typen in den Argumenten werden für die verwendet Mehrfachversand. Der Rückgabetyp wird validiert, wenn die Funktion einen Wert zurückgibt, und eine Laufzeitausnahme wird erhöht, wenn der Typ des Wertes nicht mit dem angegebenen Typ übereinstimmt.

Abstrakte Typen sind zulässig und werden für die Umsetzung allgemeiner Verhaltensweisen gefördert, die allen Subtypen gemeinsam sind. Die obige Funktion kann daher wie folgt umgeschrieben werden. In diesem Fall kann die Funktion alle ganzzahligen und realen Subtypen entsprechend akzeptieren.

Kommission(Verkauf::Ganze Zahl, Bewertung::Real)::Real 

Die Typen sind in Funktionsargumenten vollständig optional.Bei nicht spezifizierter Verwendung ist es gleichbedeutend mit der Verwendung des Typs, der der Supertyp aller Typen ist.Es ist idiomatisch, Argumententypen anzugeben, jedoch nicht zurückzugeben.

Ziel c

In dem Ziel c Programmiersprache, Methodensignaturen für ein Objekt werden in der Schnittstellenheader -Datei deklariert. Zum Beispiel,

- (Ich würde)Initwithin:(int)Wert; 

definiert eine Methode initWithInt das gibt ein allgemeines Objekt zurück (a id) und nimmt ein ganzzahliges Argument.Objective-C erfordert nur einen Typ in einer Signatur, um explizit zu sein, wenn der Typ nicht ist id;Diese Signatur ist gleichwertig:

- Initwithin:(int)Wert; 

Rost

Im Rost, Funktionssignaturen nehmen das folgende Formular an:

fn Kommission(Verkauf: U32, Bewertung: F64) -> F64; 

Siehe auch

Verweise

  1. ^ "C ++ Referenz: Programmierbegriffe". Abgerufen 3. Dezember 2013.
  2. ^ Paul Leahy. "Methodensignatur". About.com Guide. Abgerufen 2011-05-31. Eine Methodensignatur ist Teil der Methodenerklärung.Es ist die Kombination des Methodennamens und der Parameterliste.
  3. ^ Mössenböck, Hanspeter (2002-03-25). "Erweiterte C#: Variable Anzahl der Parameter" (PDF).Institut Für Systemoftware, Johannes Kepler Universität Linz, Fachbereich Informatik.p.52. Abgerufen 2011-08-03.
  4. ^ "Kapitel 4. Das Format der Klassendatei". docs.oracle.com. Abgerufen 2021-10-17.