- Anonyme Funktion
-
Eine anonyme Funktion oder anonyme Subroutine ist eine Funktion in einem Computerprogramm, die nicht über ihren Namen, sondern nur über Verweise wie Referenzen oder Zeiger angesprochen werden kann.
Inhaltsverzeichnis
Benannte Funktionen
Das Konzept benannter Funktionen ist aus praktisch jeder verbreiteten Programmiersprache bekannt: Eine Funktion erhält bei ihrer Deklaration einen eindeutigen Namen, unter dem sie anschließend angesprochen wird.
- Beispiel in Perl
# Deklaration und Definition der Funktion sub benannteFunktion { ... Code ... } # Aufruf der Funktion benannteFunktion( ... );
Der Name der Funktion wird vom Laufzeitsystem dazu verwendet, mit Hilfe der Symboltabelle oder eines dynamischen Verfahrens die Funktionsdefinition zu identifizieren und dort hinterlegten Code auszuführen. In kompilierten Sprachen löst prinzipiell ähnlich bereits der Linker die Namen nicht-virtueller Funktionen auf.Anonyme Funktionen
Mit dem Konzept anonymer Funktionen ist es möglich, neben benannten auch unbenannte Funktionen zu definieren.
- Beispiel in Perl
# Deklaration und Definition der Funktion und Zuweisung an eine (Referenz-)Variable my $funktionsReferenz = sub { ... } # Aufruf der Funktion $funktionsReferenz->( ... );
Da die Funktion hierbei keinen Namen hat, ist ein symbolischer Aufruf nicht mehr möglich. Sie wird vielmehr über eine Referenz, einen Verweis auf die Definition, indirekt angesprochen.Anonyme Funktionen können die Programmierung kontextabhängiger Funktionsaufrufe sehr stark vereinfachen. Darüber hinaus ermöglichen sie die einfache Verwendung von Funktionsreferenzen als Funktionsargumente, beispielsweise zur Übergabe einer Rückruffunktion (Callback), und die Speicherung in Datenstrukturen.
- Beispiele in Perl
# Eine Rückruffunktion an eine Funktion übergeben rueckrufendeFunktion( rueckgerufeneFunktion => sub { ... }, ... );
# Funktionsreferenzen in einer Hashtabelle speichernmy funktionen = ( the => sub { ... }, quick => sub { ... }, brown => sub { ... }, fox => sub { ... }, ... );
Das verwandte Konzept der Funktionszeiger in den Programmiersprachen C oder C++ bietet im Prinzip ähnliche Möglichkeiten, ist aber aufgrund seiner Syntax nicht trivial in der Anwendung. Zudem bleibt dort die eigentliche Funktion gleich benannt, separat definierte Verweise darauf können aber beliebige Namen tragen.In Java können für diesen Zweck anonyme innere Klassen[1] und ab Version 8 Closures[2] verwendet werden.
Anonyme Funktionen werden von den meisten Skriptsprachen unterstützt, beispielsweise von Perl, Python, Lisp und - in neueren Versionen - von JavaScript und JScript.
Einzelnachweise
- ↑ Christian Ullenboom: Java ist auch eine Insel. 9 Auflage. Galileo Press, Bonn 2011, ISBN ISBN 978-3-8362-1506-0, 8.1.4 Anonyme innere Klassen.
- ↑ (hs): Project Lambda: So werden Closures in Java 8 aussehen. In: JAXenter. it republik, 9. September 2011, abgerufen am 19. September 2011.
Weblinks
Kategorien:- Compilerbau
- Programmiersprachelement
Wikimedia Foundation.