<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Anonyme_Funktion</id>
	<title>Anonyme Funktion - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Anonyme_Funktion"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Anonyme_Funktion&amp;action=history"/>
	<updated>2026-06-07T23:16:03Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Anonyme_Funktion&amp;diff=147666&amp;oldid=prev</id>
		<title>imported&gt;Redeemer: +link</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Anonyme_Funktion&amp;diff=147666&amp;oldid=prev"/>
		<updated>2025-10-20T20:12:43Z</updated>

		<summary type="html">&lt;p&gt;+link&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Eine &amp;#039;&amp;#039;&amp;#039;anonyme Funktion&amp;#039;&amp;#039;&amp;#039; (auch &amp;#039;&amp;#039;&amp;#039;Funktionsliteral&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;Lambda-Funktion&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;Lambda-Ausdruck&amp;#039;&amp;#039;&amp;#039;) ist eine [[Funktion (Programmierung)|Funktionsdefinition]], die nicht an einen Bezeichner gebunden ist. Anonyme Funktionen werden häufig als Argumente an [[Funktion höherer Ordnung|Funktionen höherer Ordnung]] übergeben oder zum Erstellen des Ergebnisses einer Funktion höherer Ordnung verwendet, die eine Funktion zurückgeben muss. Wenn eine Funktion nur an einer Stelle verwendet wird und einen begrenzten Umfang hat, kann eine anonyme Funktion syntaktisch einfacher sein als die Verwendung einer benannten Funktion. Anonyme Funktionen sind in [[Funktionale Programmierung|funktionalen Programmiersprachen]] und anderen Sprachen mit [[First-Class-Funktion|First-Class-Funktionen]] allgegenwärtig, wo sie für den Funktionstyp dieselbe Rolle erfüllen wie Literale für andere [[Datentyp|Datentypen]].&lt;br /&gt;
&lt;br /&gt;
Anonyme Funktionen wurden ursprünglich von [[Alonzo Church]] mit seiner Erfindung des [[Lambda-Kalkül|Lambda-Kalküls]] im Jahr 1936 geprägt, in dem alle Funktionen anonym sind. Anonyme Funktionen sind seit [[Lisp]] im Jahr 1958 ein Merkmal von [[Programmiersprache|Programmiersprachen]], und eine wachsende Anzahl moderner Programmiersprachen unterstützt anonyme Funktionen.&lt;br /&gt;
&lt;br /&gt;
== Benannte Funktionen ==&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu einer anonymen Funktion erhält eine benannte Funktionen bei ihrer [[Deklaration (Programmierung)|Deklaration]] einen eindeutigen [[Bezeichner]], unter dem sie anschließend angesprochen wird. Der Name der Funktion wird vom [[Compiler]] oder vom [[Laufzeitsystem]] dazu verwendet, mit Hilfe der [[Symboltabelle]] oder eines dynamischen Verfahrens die Funktionsdefinition zu identifizieren und dort hinterlegten Code auszuführen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel in [[JavaScript]]&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function Bezeichner_meiner_Funktion() {&lt;br /&gt;
    console.log(&amp;quot;Hallo, Welt!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Bezeichner_meiner_Funktion();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Common Lisp ===&lt;br /&gt;
&lt;br /&gt;
Die folgende Funktion verdoppelt ihr Argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;common-lisp&amp;quot;&amp;gt;&lt;br /&gt;
(lambda (x) (* x 2))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um diese Funktion im selben Zug zu verwenden, kann die Funktion direkt auf ein Argument angewendet werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;common-lisp&amp;quot;&amp;gt;&lt;br /&gt;
(funcall (lambda (x) (* x 2)) 5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Wert dieses Ausdrucks ist &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das nächste Beispiel definiert eine Funktion höherer Ordnung und nennt sie &amp;lt;code&amp;gt;meinFilter&amp;lt;/code&amp;gt;. Das erste Argument dieser Funktion ist eine weitere Funktion. Im unteren Teil des Beispiels wird für dieses Argument der &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt;-Ausdruck angegeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;common-lisp&amp;quot;&amp;gt;&lt;br /&gt;
(defun meinFilter (eigenschaft liste)&lt;br /&gt;
    (cond ((null liste) nil)&lt;br /&gt;
        ((if (funcall eigenschaft (car liste))&lt;br /&gt;
            (cons (car liste) (meinFilter eigenschaft (cdr liste)))&lt;br /&gt;
            (meinFilter eigenschaft (cdr liste))))))&lt;br /&gt;
&lt;br /&gt;
(print&lt;br /&gt;
  (meinFilter&lt;br /&gt;
    (lambda (wert) (= (mod wert 2) 0))&lt;br /&gt;
    &amp;#039;(0 1 2 3 4 5 6 7 8 9)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Das Ergebnis der Berechnung ist &amp;lt;syntaxhighlight lang=&amp;quot;common-lisp&amp;quot;&amp;gt; (0 2 4 6 8) &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&lt;br /&gt;
Lambda-Ausdrücke bieten semantisch ähnliche Möglichkeiten wie das verwandte Konzept der [[Zeiger (Informatik)#Funktionszeiger (Methodenzeiger)|Funktionszeiger]]. In C++ können anonyme Funktionen folgendermaßen definiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[capture]&amp;lt;template&amp;gt;(parameter) -&amp;gt; type { body }&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capture: Übertrag der angegebenen Symbole in den Gültigkeitsbereich des Lambda-Ausdrucks&lt;br /&gt;
* template: Liste der Templateparameter (ab C++20)&lt;br /&gt;
* parameter: Liste der Übergabeparameter&lt;br /&gt;
* type: Rückgabetyp&lt;br /&gt;
* body: Funktionsrumpf&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;functional&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
using namespace std;&lt;br /&gt;
&lt;br /&gt;
vector&amp;lt;int&amp;gt; meinFilter(function&amp;lt;bool(int)&amp;gt; eigenschaft, const vector&amp;lt;int&amp;gt; &amp;amp;liste) {&lt;br /&gt;
    auto sieb = vector&amp;lt;int&amp;gt;();&lt;br /&gt;
    sieb.reserve(liste.size());&lt;br /&gt;
&lt;br /&gt;
    for (int element: liste)&lt;br /&gt;
        if (eigenschaft(element))&lt;br /&gt;
            sieb.push_back(element);&lt;br /&gt;
&lt;br /&gt;
    return sieb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    vector&amp;lt;int&amp;gt; liste = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};&lt;br /&gt;
    auto sieb = meinFilter([](int wert) { return wert % 2 == 0; }, liste);&lt;br /&gt;
        &lt;br /&gt;
    for (int element: sieb)&lt;br /&gt;
        cout &amp;lt;&amp;lt; element &amp;lt;&amp;lt; &amp;quot; &amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c#&amp;quot;&amp;gt;&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
&lt;br /&gt;
delegate bool Funktion(int wert);&lt;br /&gt;
&lt;br /&gt;
class Programm {&lt;br /&gt;
    static List&amp;lt;int&amp;gt; meinFilter(Funktion eigenschaft, List&amp;lt;int&amp;gt; liste) {&lt;br /&gt;
        var sieb = new List&amp;lt;int&amp;gt;();&lt;br /&gt;
        sieb.Capacity = liste.Count;&lt;br /&gt;
&lt;br /&gt;
        foreach (var element in liste)&lt;br /&gt;
            if (eigenschaft(element))&lt;br /&gt;
                sieb.Add(element);&lt;br /&gt;
&lt;br /&gt;
        return sieb;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void Main(string[] args) {&lt;br /&gt;
        var liste = new List&amp;lt;int&amp;gt;() {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};&lt;br /&gt;
        var sieb = meinFilter(wert =&amp;gt; wert % 2 == 0, liste);&lt;br /&gt;
&lt;br /&gt;
        foreach (int element in sieb)&lt;br /&gt;
            Console.Write(element + &amp;quot; &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Haskell ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
meinFilter eigenschaft liste = [element | element &amp;lt;- liste, eigenschaft element]&lt;br /&gt;
&lt;br /&gt;
main = print $ meinFilter (\wert -&amp;gt; mod wert 2 == 0) [0..9]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
In Java mussten für diesen Zweck früher &amp;#039;&amp;#039;anonyme innere [[Klasse (Objektorientierung)|Klassen]]&amp;#039;&amp;#039;&amp;lt;ref name=&amp;quot;Java Insel 9, 8.1.4&amp;quot;/&amp;gt; verwendet werden. Ab Version 8 stehen sogenannte &amp;#039;&amp;#039;[[Lambda-Ausdruck (Java)|Lambda-Ausdrücke]]&amp;#039;&amp;#039; zur Verfügung.&amp;lt;ref name=&amp;quot;EffectiveJava 8&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.util.ArrayList;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.function.IntPredicate;&lt;br /&gt;
import java.util.List;&lt;br /&gt;
&lt;br /&gt;
class Main {&lt;br /&gt;
    static List&amp;lt;Integer&amp;gt; meinFilter(IntPredicate eigenschaft, List&amp;lt;Integer&amp;gt; liste) {&lt;br /&gt;
        var sieb = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
        for (Integer element: liste)&lt;br /&gt;
            if (eigenschaft.test(element))&lt;br /&gt;
                sieb.add(element);&lt;br /&gt;
&lt;br /&gt;
        return sieb;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        var liste = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);&lt;br /&gt;
        var sieb = meinFilter(wert -&amp;gt; wert % 2 == 0, liste);&lt;br /&gt;
&lt;br /&gt;
        for (var element: sieb)&lt;br /&gt;
            System.out.print(element + &amp;quot; &amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function meinFilter(eigenschaft, liste) {&lt;br /&gt;
    let sieb = [];&lt;br /&gt;
&lt;br /&gt;
    for (let element of liste)&lt;br /&gt;
        if (eigenschaft(element))&lt;br /&gt;
            sieb.push(element);&lt;br /&gt;
&lt;br /&gt;
    return sieb;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
let liste = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];&lt;br /&gt;
console.log(meinFilter(wert =&amp;gt; wert % 2 == 0, liste));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def meinFilter(eigenschaft, liste):&lt;br /&gt;
    sieb = []&lt;br /&gt;
&lt;br /&gt;
    for element in liste:&lt;br /&gt;
        if eigenschaft(element):&lt;br /&gt;
            sieb.append(element)&lt;br /&gt;
&lt;br /&gt;
    return sieb&lt;br /&gt;
&lt;br /&gt;
liste = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;br /&gt;
print(meinFilter(lambda wert: wert % 2 == 0, liste))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Java Insel 9, 8.1.4&amp;quot;&amp;gt;{{Literatur&lt;br /&gt;
 |Autor=Christian Ullenboom&lt;br /&gt;
 |Titel=Java ist auch eine Insel&lt;br /&gt;
 |Auflage=13., aktualisierte&lt;br /&gt;
 |Verlag=Galileo Press&lt;br /&gt;
 |Ort=Bonn&lt;br /&gt;
 |Datum=2017&lt;br /&gt;
 |ISBN=978-3-8362-5869-2&lt;br /&gt;
 |Kapitel=8.5 Anonyme innere Klassen&lt;br /&gt;
 |Online=[https://openbook.rheinwerk-verlag.de/javainsel/08_005.html#u8.5 openbook.galileocomputing.de]&lt;br /&gt;
 }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;EffectiveJava 8&amp;quot;&amp;gt;{{Internetquelle&lt;br /&gt;
 |autor=Angelika Langer&lt;br /&gt;
 |url=https://www.angelikalanger.com/Articles/EffectiveJava/71.Java8.Lambdas/71.Java8.Lambdas.html&lt;br /&gt;
 |titel=Lambda-Ausdrücke und Methoden-Referenzen&lt;br /&gt;
 |werk=&lt;br /&gt;
 |hrsg=&lt;br /&gt;
 |datum=2013-11&lt;br /&gt;
 |abruf=2020-04-17}}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Compilerbau]]&lt;br /&gt;
[[Kategorie:Programmiersprachelement]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Redeemer</name></author>
	</entry>
</feed>