Eine Funktion eines Computerprogramms, die nicht über ihren Namen, sondern ausschließlich über Verweise (Referenzen, Zeiger, etc.) angesprochen werden kann. Typischerweise können solche Funktionen zur Laufzeit definiert bzw. parametrisiert werden (siehe Lambda-Kalkül).
Das Konzept benannterFunktionen ist aus praktisch jeder verbreiteten Programmiersprache bekannt: eine Funktion erhält bei ihrer Definition einen eindeutigen Namen, über den man sie anschließend aufruft.
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 compilierten Sprachen löst prinzipiell ähnlich bereits der Linker die Namen nichtvirtueller Funktionen auf.
Mit dem Konzept der anonymen Subroutine wird es nun möglich, neben solchen benannten auch unbenannte Funktionen zur Laufzeit zu definieren.
Da die Funktion keinen Namen mehr hat, ist ein symbolischer Aufruf nicht mehr möglich, die Routine wird vielmehr über eine Referenz, also einen Verweis auf die Definition, indirekt gestartet.
Anonyme Subroutinen können die Programmierung kontextabhängiger Funktionsaufrufe sehr stark vereinfachen. Darüber hinaus ermöglichen sie die einfache Verwendung von Funktionsreferenzen als Funktionsparameter (Übergabe eines Callbacks) und die Speicherung in Datenstrukturen.
# pass a callback
doSomething(callback => sub {...}, ...);
# store subrefs in a hash
my calls=(
quick => sub {...},
clean => sub {...},
dirty => sub {...},
...
);
Das verwandte Konzept der function pointers in C oder C++ bietet prinzipiell ähnliche Möglichkeiten, ist aber aufgrund seiner Syntax und diverser Sonderregeln sehr viel komplizierter in der Anwendung und alles andere als intuitiv. Darüberhinaus bleiben die eigentlichen Funktionen dabei weiterhin benannt, man legt lediglich zusätzliche Verweise darauf an.
Sprachen, die anonyme Subroutinen unterstützen, sind Perl und (bitte ergänzen)?
Dieser Beitrag ist aus der XML-Version der deutschen WikiPedia® entwickelt worden und unterliegt inhaltlich den GNU FDL-Lizenzbestimmungen. Linkziele außerhalb der wikipedia-Inhalte unterliegen den Urheberrechten der jeweiligen Anbieter
( DirectDownloads ) Kalenderblätter druckfertig aufbereitet für Schmuckblätter zum Selbstdrucken im Word DOC6/RTF Format, je Euro 5 über Click&BuyJAN | FEB | MÄRZ APRIL | MAI | JUNI JULI | AUG | SEPT OKT | NOV | DEZ
Das Geschenk für jeden Anlass, nicht nur bei 'runden' Jubiläen Andere Einzeltage oder Zahlungsarten bitte HIER bestellen
Diese Web Site verdient ihr Geld durch Produktverkäufe (CD-ROM, downloads) und in erster Linie durch Anzeigen. Wenn Sie als Webmaster zuverlässige Partner suchen für Ihr eigenes Anzeigenschäft, dürfen Sie sich gerne auf unsere Empfehlungen stützen:
z.B.: GigaCash & ProfiWin